
Computer Science Course Descriptions
CS - 107. Computing, Robots, and Java (4)
An introduction to computer science for non-majors with little prior programming experience. Students develop programs using visual and high-level programming languages to control robots, create animated simulations, and build Internet and general applications. In addition, students are exposed to an overview of computing and its influence on modern society. Offered Fall and Spring.
CS - 110. Introduction to Computer Science I (4)
Use of procedures, parameter passing, block structures, data types, arrays, abstract data structures, conditional control, iterative and recursive processes, and input/output in programming solutions to a variety of problems. Top-down and bottom-up design and functional decomposition to aid in the development of programs. Four hours lecture and two hours lab. Offered Fall and Spring.
CS - 112. Introduction to Computer Science II (4)
Prerequisite: CS - 110 (grade of C or better). Design and development of significantly sized software using top-down design and bottom-up implementation. Dynamically allocated data, object-oriented programming, architecture of memory, basics of language translation, and basics of algorithm analysis. Development of simple graphical user interfaces. Four hours lecture, two hours lab. Offered Fall and Spring.
CS - 186. Special Topics in Computer Science (1-4)
Topics not covered by other CS curricular offerings. Students may register for this class in more than one semester. Consent of instructor required. Offered intermittently.
CS - 210. Assembly Language and Systems Programming (4)
Prerequisite: CS - 112 recommended. Introduction to machine structures, data representations, programming in assembly language; I/O programming and macros. Structure, design, and implementation of computer system software and utility programs. Four hours lecture. Offered every Fall.
CS - 220. Introduction to Parallel Computing (4)
Prerequisites: MATH - 201 and CS - 110 (grade of B or better) or MATH - 109 and CS - 112 (grade of C or better). Overview of parallel architectures. Programming shared and distributed memory parallel computers. Parallel program performance evaluations. Four hours lecture, two hours lab. Offered every Fall.
CS - 245. Data Structures and Algorithms (4)
Prerequisites: CS - 112 (grade of C or better) and MATH - 201 (grade of C or better). Algorithm analysis and asymptotic running time calculations. Algorithm design techniques and implementation details. Algorithms for sorting and searching, trees, graphs, and other selected topics. Four hours lecture. Offered every Spring.
CS - 286. Special Topics in Computer Science (1-4)
Topics not covered by other CS curricular offerings. Students may register for this class in more than one semester. Consent of instructor required. Offered intermittently.
CS - 315. Computer Architecture (4)
Prerequisites: CS - 210 (grade of C or better), and CS - 245 (grade of C or better). Performance analysis techniques, instruction set design, computer arithmetic, digital design, processor implementation, and memory systems. Performance enhancement using pipelining and cache memory. Four hours lecture and two hours lab. Offered every Spring.
CS - 326. Operating Systems (4)
Prerequisites: CS - 210 (grade of C or better), CS - 220 (grade of C or better), CS - 245 (grade of C or better). The design and implementation of operating systems. Study of processes, threads, scheduling, synchronization, interprocess communication, device drivers, memory management, and file systems. Four hours lecture and two hour lab. Offered every Fall.
CS - 333. Database Systems (4)
Prerequisites: CS - 112 (grade of C or better) and CS - 245 (grade of C or better). Data modeling, record storage, and file organization; database theory; relational, hierarchical, and network models; database management systems and query languages, programming language interfaces to databases; web-based client-server development. Four hours lecture. Offered Spring 2007.
CS - 336. Computer Networks (4)
Prerequisites: CS - 112 (grade of C or better); CS - 245 recommended. Current methods and practices in the use of computer networks to enable communication. Physical and architectural elements, and layered models of networks. Communication protocols and associated algorithms; local and wide area networks; network security. Four hours lecture. Offered every Fall.
CS - 342. Introduction to Software Engineering (4)
Prerequisite: CS - 245 (grade of C or better) and upper division standing. Software process models and theory; structured development as a precursor to object-oriented development; advanced object-oriented design including modeling languages, design patterns, assertions, and dynamic binding and polymorphism; advanced programming techniques, including complex memory management and the design and use of (generic) components; software testing; user interface development; and client-server web development. Four hours lecture and two hours lab. Offered every Spring.
CS - 345. Programming Language Paradigms (4)
Prerequisites: CS - 112 (grade of C or better); CS - 245 recommended. Syntax, semantics, concepts, capabilities, and implementation details of several different programming languages, including imperative, functional, object oriented, and logical languages. Comparative advantages and disadvantages of different languages and paradigms. Four hours lecture. Offered every Fall.
CS - 385. Special Lecture Series in Computer Science (1)
Weekly colloquium and discussion session on current developments in various aspects of computer science. Students may register for this course in more than one semester. Majors must take this course at least twice. One hour lecture. Offered Fall and Spring.
CS - 386. Special topics in Computer Science (1-4)
Topics not covered by other CS curricular offerings. Students may register for this class in more than one semester. Consent of instructor required. Offered intermittently.
CS - 398. Directed Reading and Research (1-4)
Written permission of the instructor, chairperson, and dean is required.
CS - 411. Automata Theory (4)
Prerequisites: MATH - 201 (grade of C or better), MATH - 202 (grade of C or better). Finite state automata with bounded and unbounded memory. Regular languages and expressions. Context-free languages and grammars. Push-down automata and Turing machines. Undecidable languages. P versus NP problems and NP-completeness. Four hours lecture. Offered every Fall.
CS - 414. Compilers (4)
Prerequisites: CS - 210 (grade of C or better) and CS - 245 (grade of C or better); CS - 345 recommended, CS - 411 recommended. Lexical analysis, parsing, semantic analysis, and code generation. Optimization techniques. Compiler design tools and compiler compilers. Four hours lecture. Offered every Spring.
CS - 419. Computer Graphics (4)
Prerequisites: CS - 112 (grade of C or better), CS - 210 (grade of C or better), MATH - 109 (grade of C or better), MATH - 202 (grade of C or better), or permission of instructor. Theory and production of interactive computer graphics. Topics chosen from graphics programming and algorithms, modeling, rendering, ray-tracing, and animation. Four hours lecture. Offered Spring 2007.
CS - 430. Numerical Analysis (4)
Prerequisites: CS - 112 (grade of C or better), MATH - 109 (grade of C or better), MATH - 202 (grade of C or better). Floating point representation of numbers, error analysis, root finding, interpolation, numerical integration and differentiation, numerical solution of linear systems, numerical solution of differential equations. Four hours lecture. Offered Spring 2006.
CS - 461. Logic for Computer Science and Math (4)
Prerequisite: MATH - 201 (grade of C or better), or permission of instructor. Propositional and predicate calculus, syntax and semantics, formal theories, logic programming, lambda calculus. Applications of logic to computer science and mathematics. Four hours lecture. Offered Spring 2007.
CS - 480. Computers and Society: Privacy, Security, Ethics, and Service (4)
Prerequisite: CS - 326 (grade of C or better), or permission of instructor. Computer and network security measures; encryption protocols. Ethical theory and applications in computing. Seminar discussion on value systems, social impact, and human factors, and about use and misuse of computers. Four hours lecture. Offered Fall 2006.
CS - 486. Special Topics in Computer Science (1-4)
Topics not covered by other CS curricular offerings. Students may register for this class in more than one semester. Consent of instructor required. Offered intermittently.
CS - 490. Senior Team Project (4)
Prerequisite: CS - 342 (grade of C or better) and senior standing. Students working in teams investigate, specify, design, implement, test, document, and present to their classmates a significant software project. Sound software engineering practicies are presented in lectures and used to evaluate each stage of the project. Written and verbal communication is emphasized through frequent documentation submissions, informal group discussions, code walk-throughs, and student presentations. With the instructor's permission, the course may be repeated for credit. Four hours lecture. Offered Fall and Spring.
CS - 498. Directed Reading and Research (1-4)
Written permission of the instructor, chairperson, and dean is required.

University of San Francisco
http://www.usfca.edu
2130 Fulton Street
San Francisco, CA 94117-1080