
Computer Science Course Descriptions
CS - 601. Object-Oriented Software Development (4)
Prerequisite: CS - 245 and experience with an object-oriented programming language. A study of software development. Software engineering principles and structured methods are discussed as a prelude to the focus on object-oriented approaches. All phases of the software lifecycle are covered, including analysis, design, implementation and testing, and maintenance. Other topics include user interface design and development, software reuse and the design of reusable software components, software patterns, and web-based client-server programming. Four hours lecture. Offered every Fall.
CS - 615. Computer Architecture (4)
Prerequisites: CS - 245, CS - 315, CS - 326. Survey of contemporary computer organizations covering early systems, instruction set design, processor implementation (pipelining, multiple issue, and speculative execution), memory hierarchy design (on-chip and off-chip caches, translation-lookaside buffers, and virtual memory), input/output (devices, busses, and processor interfaces), performance evaluation, and current research topics. Project required. Four hours lecture. Offered Fall 2006.
CS - 620. Network Design (4)
Prerequisites: CS - 245, CS - 326, CS - 336. Overview of local and wide-area computer networks and contemporary lower-layer network protocols. Topics to be chosen from: switched networks, broadcast networks, multiplexing, layered protocol models, physical aspects of data transmission, data-link protocols, network modeling, performance issues, and current research in network design. Term paper or project required. Offered Spring 2007.
CS - 621. Network Programming (4)
Prerequisites: CS - 245, CS - 326, CS - 336. Network application programming. Upper-layer protocols and their interfaces. Topics to be chosen from: TCP/IP, sockets, remote procedure calls, network management, client/server programming, internet protocols (FTP, SMTP, HTTP, and SNMP), higher-level interoperability (CORBA), performance issues, and security. Project required. Four hours lecture. Offered Spring 2006.
CS - 625. Parallel and Distributed Computing (4)
Prerequisites: CS - 245, CS - 315, CS - 326. Introduction to shared- and distributed-memory architectures. Mechanisms for parallelism: locks, barriers, semaphores, monitors, message-passing, RPC, and active messages. Programming shared- and distributed-memory systems. Introduction to parallel algorithms and parallel performance prediction and measurement. Programming languages and libraries that support parallel and distributed computing. Four hours lecture. Offered Fall 2006.
CS - 630. Advanced Microcomputer Programming (4)
Prerequisite: CS - 210 or equivalent experience with Intel 80x86 Assembly Language. In-depth introduction to the protected-mode architecture of Pentium-family processors and supporting peripheral controllers. Topics include memory segmentation and paging, privilege transitions, multitasking, exception handling, debugging, performance monitoring, system management mode, virtual-8086 emulation mode, and APIC interprocessor interrupts. Four hours lecture. Offered Spring 2006.
CS - 635. Advanced Systems Programming (4)
Prerequisite: requires knowledge of C/C++ and acquaintance with UNIX/Linux operating systems. This course focuses on advanced hardware and software topics in systems programming, such as device-driver design, interprocess communication, and kernel-module programming in the Linux environment. Four hours lecture. Offered Spring 2007.
CS - 636. Operating Systems (4)
Prerequisites: CS - 245, CS - 315, CS - 326. Study of the design and implementation of modern operating systems. Topics chosen from: operating system structure, scheduling, protection, virtual memory, communication mechanisms, concurrency, threads, multiprocessor support, distributed systems, performance evaluation, and current operating systems research. Project required. Four hours lecture. Offered Spring 2006.
CS - 640. Computer Graphics (4)
Prerequisites: CS - 419 or all of MATH - 202 , CS - 245 , and knowledge of a graphics API. Concepts, algorithms, and mathematics of computer graphics in two and three dimensions. Homogeneous coordinates; modeling and viewing transformations. Geometric, procedural, and lighting models. Rendering, shading, and animation methods. Four hours lecture. Offered Fall 2005.
CS - 652. Programming Languages (4)
Prerequisites: CS - 326 and either CS - 345 or CS - 414. Study of the design and implementation of software development languages. Topics chosen from: syntax, semantics, translation, run-time systems, advanced programming techniques, and debugging. Language families to be chosen include: functional, logic, visual, formal specification, design, pattern, database, and concurrent. Project required. Four hours lecture. Offered Spring 2006.
CS - 662. Artificial Intelligence Programming (4)
Prerequisite: CS - 245. Use of artificial intelligence techniques to solve large scale problems. Search strategies, knowledge representation, and other topics chosen from: simulated annealing, constraint satisfaction, logical and probabilistic reasoning, machine learning, expert systems, natural language processing, neural networks, genetic algorithms, and fuzzy logic. Both theoretical foundations and practical applications will be covered. Coursework includes written assignments and programming projects. Four hours lecture. Offered Fall 2005.
CS - 673. Algorithms (4)
Prerequisite: CS - 245. Algorithm analysis and asymptotic running time estimates. Expected running times and amortized analysis. Design techniques, including divide and conquer, greedy, and dynamic programming. Algorithms for searching and sorting, graphs, and advanced topics. Four hours lecture. Offered Spring 2007.
CS - 675. Theory of Computation (4)
Prerequisites: CS - 245, CS - 411. Topics to be chosen from: models of computation and formal languages, computability and complexity, P and NP completeness and P =? NP, advanced computing models. Four hours lecture. Offered Fall 2005.
CS - 680. Internet Systems Research (4)
Prerequisite: CS - 662. Survey of Internet systems research including the anatomy of the web, search engine architecture and algorithms, information retrieval, crawling, text analysis, personalization and context, collaborative environments, and the semantic web.
CS - 682. Distributed Software Development (4)
Prerequisite: CS - 601. Internet application development, including server-side technologies such as scripting languages, template frameworks, web page mining, and distributed computing issues such as peer-to-peer, multi-cast, and distributed agents.
CS - 684. Human-Computer Interaction (4)
Prerequisite: CS - 245. Design principles and techniques used to facilitate the interaction between people and computers. Topics covered include user-interface design and evaluation, web site design, prototyping, usability engineering, presenting complex information, hypertext, multimedia, scientific visualization, input devices, ubiquitous computing, and cognitive models.
CS - 686. 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 - 687. Digital Society (4)
A study of the effects of computing and the Internet on modern society. Topics include digital libraries, e-commerce, copyright law and open source movements, on-line communities, education and technology, and privacy and security.
CS - 689. Residency in Internet Engineering (4)
Prerequisites: CS - 680 and CS - 682. Participation in a cooperative work program with one of the USF affiliated organizations. Typically, students will work in groups and be supervised jointly by both an affiliate manager and a USF professor.
CS - 690. Master's Project (4)
Prerequisite: CS - 601 and Regular Status. At the discretion of the instructor, the project will be either a sponsored project for a commercial concern or or other institution or a research project. In either case, the project will result in the specification, design, and development of a significant software system with full documentation, an oral presentation to the university community, and a written report. Four hours lecture. Offered every semester.
CS - 695. Practicum Study (2)
Prerequisite: CS - 601 and Practicum Option status. Participation in a supervised work program where students apply USF coursework knowledge in a practical setting. Work is supervised by a USF faculty member and a corporate sponsor.
CS - 698. Directed Reading and Research (1-4)
Written permission of the instructor, graduate program coordinator and dean is required.
CS - 699. Master's Thesis (4)
Prerequisite: Thesis approval form required. Master's thesis.

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