Department of Computer Science
 
CS Home | CCLS Home | SFSU Home | Resources & Links | ACM | Contact
 
 

Search

Course Descriptions
Updated April 10, 2008
Undergraduate Courses

CSC 101 - Computers for Everyone
CSC 201 - Introduction to Computer Programming for Non-Majors
CSC 202 - .NET Programming with C#
CSC 203 - Java Programming
CSC 204 - Web Authoring
CSC 205 - Computer Game Design
CSC 206 - Python Programming
CSC 209 - See CSC 309
CSC 210 - Introduction to Computer Programming
CSC 211 - Introductory Software Lab

CSC 212 - Introduction to Software Development

CSC 213 - Fundamentals of Computer Science

CSC 215 - C Programming

CSC 217 - See CSC 317

CSC 271 - Introduction to ORACLE: SQL & PL/SQL

CSC 277 - Experimental Course Lower Division (see examples below)

CSC 305 - Social and Ethical Implications of Computing
CSC 309 - Computer Programming for Scientists and Engineers
CSC 310 - Assembly Language Programming and Introduction to Computer Organization
CSC 313 - Data Structures
CSC 317 - Introduction to Web Software Development
CSC 330 - Discrete Mathematical Structures
CSC 338 - Information Technology in a Global Society
CSC 413 - Software Development
CSC 415 - Operating Systems Principles
CSC 510 - Analysis of Algorithms I
CSC 520 - Theory of Computing
CSC 600 - Programming Language Design
CSC 615 - Unix Programming
CSC 620 - Natural Language Technologies
CSC 630 - Computer Graphics Systems Design
CSC 631 - Multiplayer Game Development
CSC 637 - Software Techniques for Computer Music
CSC 639 - Software Testing and Quality Assurance
CSC 640 - Software Engineering
CSC 641 - Computer Performance Evaluation
CSC 642 - Human Computer Interaction
CSC 644 - Computer Measurements
CSC 645 - Computer Networks
CSC 650 - Secure Networked Systems
CSC 651 - System Administration
CSC 656 - Computer Organization
CSC 658 - Programming Cafe
CSC 664 - Multimedia Systems
CSC 665 - Artificial Intelligence
CSC 667 - Internet Application Design and Development
CSC 668 - Object Oriented Programming
CSC 671 - Neural Networks
CSC 675 - Introduction to Database Systems
CSC 690 - Undergraduate Seminar
CSC 693 - Cooperative Education Program
CSC 694 - Cooperative Education
CSC 695 - Computing in the Community
CSC 697 - Senior Project in Computer Science
CSC 699 - Special Study

Graduate Courses

CSC 720 - Advanced Operating Systems

CSC 730 - Advanced Database Systems

CSC 737 - Software Techniques for Computer Music

CSC 745 - Computer Networks

CSC 775 - Introduction to Database Systems

CSC 810 - Analysis of Algorithms II

CSC 815 - Graph Theory Algorithms

CSC 820 - Advanced Natural Language Technologies
CSC 825 - Advanced Automata Theory
CSC 830 - Advanced Computer Graphics
CSC 831 - Multiplayer Game Development
CSC 835 - Distributed Systems
CSC 837 - Advanced Sound Synthesis
CSC 840 - Software Metrics and Quality Assurance
CSC 841 - Computer Performance Evaluation
CSC 842 - Human Computer Interaction
CSC 845 - Advanced Computer Networks
CSC 846 - Systems Architecture
CSC 848 - Advanced Software Engineering
CSC 849 - Information Retrieval
CSC 850 - Compiler Design
CSC 856 - Advanced Computer Architecture
CSC 857 - Bioinformatics Computing
CSC 858 - Biology for Scientists
CSC 864 - Multimedia Systems
CSC 865 - Artificial Intelligence
CSC 867 - Advanced Internet Application Design and Development
CSC 868 - Object Oriented Programming
CSC 869 - Data Mining
CSC 870 - Computational Discrete Geometry
CSC 871 - Neural Networks
CSC 872 - Pattern Analysis and Machine Intelligence
CSC 875 - Advanced Topic Database Design
CSC 878 - Advanced Object Oriented Programming
CSC 890 - Variable Topics - Hardware/Software Systems
CSC 890 - Writing for Computer Science and Engineering
CSC 893 - Supervised Industrial Research
CSC 895 - Applied Research Project
CSC 897 - Research
CSC 898 - Master's Thesis
CSC 899 - Special Study
Undergraduate Course Descriptions
Back to Undergraduate Program
 
Course
Units
CSC 101 Computers for Everyone
3

Prerequisites: None.

Comprehensive and basic overview of computers and their use for everyday tasks like information retrieval, Internet, writing, presentations, communication, Web publishing, e-commerce, entertainment, computation. No prior knowledge required.

 
 
 
CSC 201 Introduction to Computer Programming for Non-Majors
3

Prerequisites: Completion of General Education Quantitative Reasoning requirement with grade of C or above.

Introduction to a modern programming language. Algorithms and basic programming concepts. Programming assignments suitable for pre-calculus students. May not be taken for credit by Computer Science Majors.

 
 
CSC 202 .NET Programming with C#
3

Prerequisites: CSC 201 or CSC210 or BICS 263 or permission of the instructor.

Introduces students to .NET programming and the C# programming language. Topics covered include an overview of C#, Graphical User Interface (GUI) programming in Microsoft Windows, simple web services implementation, the implementation of simple WWW servers and browsers, and a full introduction to MS Visual Studio .NET.

 
   
CSC 203 Java Programming
3

Prerequisites: CSC 210 or consent of instructor.

The Java language and object oriented programming. The use of inheritance, polymorphishm, exception handling, and libraries; Java Applets and GUI Development using Swing.

 
  Back to Top
CSC 204 Web Authoring
3

Prerequisites: CSC 210 or consent of instructor.

Basic web authoring techniques and tools. Site design using popular applications. Technologies discussed include HTML, internet protocols, multi-media integration and scripting languages.

 
   
CSC 205 Computer Game Design
3

Prerequisites: MATH 70.

Theory and practice of computer game design. Technical aesthetic, cultural, and economic components of creating computer games. Graphics and art, physics, sound and music, genre analysis, and careers in the industry.

 
 
CSC 206 Python Programming
3

Prerequisites: CSC 210 or consent of instructor.

Python language programming, with basic principles of interpretative languages. The use of basic Python constructs and standard libraries (e.g. networking, regular expressions, GUI). Simple apps such as WWW, games.

 
Course Syllabus
 
CSC 210 Introduction to Computer Programming (in C++)
3

Prerequisites: a grade of C or better in MATH 226. CS majors must take CSC 212 concurrently or prior to CSC 210.

Introduction to a modern programming language. Design implementation, testing, debugging, maintenance and documentation of programs. Coverage of basic algorithms, programming concepts and data types (including simple types, arrays, structs and classes). Intro to concepts of object-oriented programming. Topics include both numerical and non-numerical problems. Required of Computer Science majors.

Course Syllabus
  Back to Top
CSC 211 Introductory Software Lab
1

Prerequisite: Consent of instructor. Concurrent enrollment with 210 is recommended.

Hands on exercises in programming, including procedural, object oriented , C++ and Java programming. Students are expected to bring their own laptops.

Course Syllabus
   
CSC 212 Introduction to Software Development
2

Prerequisite: Consent of instructor.

Laboratory activities to supplement and amplify material covered in introductory programming classes. Introduction to SW and Program development in Unix/Linux, Windows and Mac. Usage of SW development tools. CR/NC only.

Course Syllabus
   
CSC 213 Fundamentals of Computer Science
(renumbered from 301 as of Fall 2003)
3

Prerequisites: a grade of C or better in MATH 227 and CSC 210, and passing grade in CSC 212. Transfer students may enroll in CSC 212 concurrently.

Fundamental algorithm concepts, computer organization, data structures and abstractions, programming methodologies, distributed and parallel computation, areas of application;artificial intelligence and database systems.

Course Syllabus
Back to Top
CSC 215 C Programming
3

Prerequisite: MATH 226 or consent of instructor.

Introduction to C programming covering all basic concepts, comparisons with C++, and team software development and performance issues. Homework and final project assignment.

 
CSC 271 Introduction to ORACLE: SQL & PL/SQL
3

Prerequisite: CSC 201, CSC 210, or any Programming Experience.

Oracle tools and methodologies to fulfill real-world business information requirements. Design and creation of database structures to store, retrieve, update, and display data in relational databases. (Also offered as BICS 277 and ENGR 277. Cannot be repeated under alternate prefix.) May not be used to satisfy major requirements.

  Back to Top
CSC 277 Experimental Course
3

Prerequisites: TBD - for each course being proposed it will be different.

TBD - Each course will be different.

 
 
CSC 305 Social and Ethical Implications of Computing
1

Prerequisites: a grade of C or better in CSC 210.

Privacy and security. Censorship and freedom of Internet use. Social issues related to cryptography and the use of Internet. Ethical issues in software development. Legal issues of intellectual property, copyright, public domain software, shareware, patents, licenses, trademarks and trade secrets.

 
   
CSC 309 Computer Programming for Scientists and Engineers
3

Prerequisites: MATH 226 or consent of instructor.

Procedural programming in C for scientific applications. Good programming practices, and basic numerical and nonnumerical algorithms for scientists and engineers.

 
 
 
CSC 310 Assembly Language Programming and Introduction to Computer Organization
3

Prerequisites: a grade of C or better in ENGR 356.

Data representation. Assembly language programming. Subroutine linkage. Machine language encoding. Interrupt/exception handling. CPU datapath and control design.

Course Syllabus
  Back to Top
CSC 313 Data Structures
3

Prerequisites: a grade of C or better in CSC 213 and MATH 330. MATH 330 may be taken concurrently.

Linear and non-linear data structures, including linked lists, stacks, queues, trees, tables and graphs. Dynamic memory allocation and deallocation. Design of algorithms and programs for creating and processing data structures

Course Syllabus
CSC 317 Introduction to Web Software Development
3

Prerequisite: CSC 201 or CSC 210 or consent of instructor.

Intro to development of Web apps: client, web server and back-end database. Installation of: Apache Web Server, PHP processor, MySQL database. Develop a simple e-commerce application.

 
 
CSC 330 Discrete Mathematical Structures for Computer Science
3

Prerequisites: grades of C or better in CSC 210 and MATH 227.

Review of set algebra, relations and functions. Permutations. Propositional logic. Proof techniques. Introduction to graph theory. Infinite sets. Applications to Computer Science.

 
   
CSC 338 Information Technology in a Global Society
3

Prerequisite: a grade of C or better in ENG 214.

Study of an increasingly interconnected technology and sharing of information in the 21st Century. The important role technology plays in the U.S. and the world. Exploration of the information age in several social contexts.
Cross listed with ISYS 338.

 
   
CSC 413 Software Development
3

Prerequisites: a grade of C or better in CSC 313.

Design and development of modern software applications. Object-oriented techniques: encapsulation, inheritance, and polymorphism as mechanisms for data design and problem solution. Software design, debugging, testing, and UI design. Software maintenance. Software development tools.

Course Syllabus
  Back to Top
CSC 415 Operating Systems Principles
3

Prerequisites: a grade of C or better in CSC 310, CSC 313, MATH 324, and PHYS 230.

Survey operating system concepts such as concurrent processes, basic synchronization techniques, deadlock, memory management, file systems, security, networks, distributed processing.

Course Syllabus
 
CSC 510 Analysis of Algorithms I
3

Prerequisites: a grade of C or better in CSC 313, MATH 324 and MATH 325.

Detailed study of the basic notions of the design of algorithms and the underlying data structures. Several measures of complexity are introduced. Emphasis on the structure, complexity, and efficiency of algorithms. Examples are taken from numerical and non-numerical computations.

Course Syllabus
   
CSC 520 Theory of Computing
3

Prerequisites: a grade of C or better in CSC 213, CSC 330 and MATH 325.

Introduction to automata, formal languages, and the notion of computability. Sequential machines as language acceptors. Context free and context sensitive grammars. Computable and recursive functions, universal turing machines, introduction to unsolvable problems.

Course Syllabus
   
CSC 600 Programming Language Design
3

Prerequisites: a grade of C or better in CSC 413.

Design concepts for high-level programming languages. Comparative study of several languages and an introduction to grammars and parsing techniques. Extra Fee Required.

Course Syllabus
Back to Top
CSC 615 Unix Programming
3

Prerequisites: a grade of C or better in CSC 415 or consent of instructor.

Programming in a UNIX environment. Topics include: regular expressions; utilities such as awk, sed, grep, csh, sh, ksh; system calls such as signals, sockets, POSIX IPC and POSIX threads; kernel internal structures. Extra fee required.

 
Course Syllabus
   
CSC 620 Natural Language Technologies
3

Prerequisites: a grade of C or better in CSC 413.

Natural language parsing technology and grammars. Elements of computational semantics, discourse structure and generation. Survey of related topics such as information retrieval, question-aswering, machine translation, speech processing. Paired with CSC 820. Students who complete CSC 620 may not take CSC 820 later for credit. Extra fee rquired.

   
CSC 630 Computer Graphics Systems Design
3

Prerequisites: a grade of C or better in CSC 313 and MATH 325.

This course covers computer graphics systems design and display hardware architecture. An overview is given of device-independent graphics systems, two- and three- dimensional viewing pipelines, hidden line and surface removal algorithms, raster graphics techniques and color space models. Web page design and Flash exercises give an introduction to animation and multimedia. Programming with the OpenGL library affords the class a chance to design advanced animation programs in three-dimensions.

Course Syllabus
  Back to Top
CSC 631 Multiplayer Game Development
3

Prerequisites: a grade of C or better in CSC 413 or consent of instructor.

This course will teach technologies and algorithms to develop multiplayer game. Topics include real-time 3D graphics programming, data structures for occlusion and collision detection, particle engines, and network programming for multiplayer architecture. Students will learn the above topics by building a multiplayer game through 3 programming projects and a team term project. Students also need to study and present an advance topic related to game development.

Course Syllabus
   
CSC 637 Software Techniques for Computer Music
3

Prerequisites: a grade of C or better in CSC 413 or consent of instructor.

Algorithms and software design for digital audio and computer music. Analysis and synthesis techniques. Real-time control and interaction. (Formerly CSC 635.)

Course Syllabus
   
CSC 639 Software Testing and Quality Assurance
3

Prerequisite: a grade of C or better in CSC 413 or ISYS 367, or ISYS 368, or consent of instructor. Students are advised to take this class concurrently with CSC 640 and/or ISYS 663

Technical and managerial aspects of testing and quality assurance in software development with emphasis on practical projects. Tools for testing and QA. Performance evaluation, verification and validation of software. Managing and documenting software testing and QA activities in local and outsourced projects.
Cross listed with ISYS 639 and team taught with SFSU ISYS Department

Course Syllabus
   
CSC 640 Software Engineering
3

Prerequisites: a grade of C or better in CSC 413; and grade C or better in CSC 317 or CSC 667; or consent of instructor.

Practical methods and tools for SW Engineering, including organizational teamwork. Course is paired with CSC 848. Students who have completed CSC 848 may not take CSC 640 for credit.

Course Syllabus
   
CSC 641 Computer Performance Evaluation
3

Prerequisites: a grade of C or better in CSC 415 or consent of instructor.

Computer performance analysis probelms related to system design, selection, and tuning. Modeling using stochastic and operational queuing models. Workload characterization, design, and performance measurement methods. Design of simulation models for computer systems. Paired with CSC 841. Students who have completed CSC 641 may not take 841 later for credit. Extra fee required.

Course Syllabus
Back to Top
CSC 642 Human Computer Interaction
3

Prerequisites: a grade of C or better in CSC 413 or consent of instructor.

The design, implementation, and evaluation of human/computer interfaces. Topics include interface devices, interface metaphors, interaction styles, User Centered Design, testing, and quality assessment.

Course Syllabus
   
CSC 644 Computer Measurements
3

Prerequisites: a grade of C or better in CSC 413 and CSC 415.

Software measurement and experimentation tools. Data collection and analysis. Web measurements. Benchmarking and design of benchmarks. Use of software monitors. Extra fee required.

   
CSC 645 Computer Networks
3

Prerequisites: a grade of C or better in CSC 415.

Computer network design, evaluation and testing. Computer network standards and implementation. Hardware/software design and compatibility issues. Paired with CSC 745. Students who have completed CSC 645 may not later take CSC 745 for credit. Extra fee required.

Course Syllabus
Back to Top
CSC 650 Secure Networked Systems
3

Prerequisites: a grade of C or better in CSC 415 or consent of instructor.

Analysis, planning, construction and operation of secure networked computing systems with an emphasis placed on security for environments connected to the Internet, encryption, assets, risk, authentication, trust, controls, defense, routers, firewalls, law, ethics. Extra fee required.

Course Syllabus
   
CSC 651 System Administration
3

Prerequisites: a grade of C or better in CSC 413 and CSC 415. CSC 415 may be taken concurrently.

User administration. Operating system installation, tuning, and control. Network administration. Security management. Performance tuning and management. Extra fee required.

Course Syllabus
   
CSC 656 Computer Organization
3

Prerequisites: a grade of C or better in CSC 415 (may be taken concurrently) or consent of instructor.

Instruction set design. Piplelined datapath and control. Cache and memory system design. Input/output subsystems. Software/hardware interactions. Parallel processing. Extra fee required.

Course Syllabus
 
CSC 658 Programming Cafe
3

Prerequisites: CSC 413 with grade C or better or consent of instructor.

Extensive programming practice to advance programming skills and processes; pair programming exercises; code review techniques and practice.

Course Syllabus
Back to Top
CSC 664 Multimedia Systems
3

Prerequisites: a grade of C or better in CSC 413

The focus of this course is to present comprehensive topics in multimedia, such as basics of image and video processing, compression, multimedia databases, standard, synchronization, formats in perspective of systems and algorithms. This course is paired with CSC 864. Students who completed CSC 864 may not take CSC 664 for credit. For graduate credit, survey and presentation of recent literatures is required.

Course Syllabus
   
CSC 665 Artificial Intelligence  
3

Prerequisites: a grade of C or better in CSC 413 or consent of instructor.

Computational methods for studying intelligence. Automated problem solving, heuristic search, planning, inference, natural language processing and machine learning. Paired with CSC 865. Students completing this courses may not take CSC 865 later for credit. Extra fee required.

   
CSC 667 Internet Application Design and Development
3

Prerequisite: a grade of C or better in CSC 413 or consent of instructor.

The focus of this course is to teach the principles of the technologies that the Web is based upon. It will cover Client-Server architecture, Extensible Markup Language (XML), HyperText Transfer Protocol (HTTP), then client-side applications (JavaScript and Java Web Start/JNLP), programming languages for server-side applications (Python, Java Server Pages and Servlets), and advanced techniques and topics on the WWW.

Course Syllabus
Back to Top
CSC 668 Object Oriented Programming
3

Prerequisite: Senior or graduate standing, and at least a C grade in CSC 413, or consent of instructor.

Basic principles of object oriented analysis and design utilizing UML, advanced object oriented programming principles, design patterns, frameworks and toolkits; Agile software design processes. Development of a mid-size programming project working in teams. Paired with CSC 868. Students completing this course may not take CSC 868 later for credit. Extra fee required.

Course Syllabus
   
CSC 671 Neural Networks
3

Prerequisite: a grade of C or better in CSC 413.

Analysis of artificial neural networks. Selected applications from: associative memories, learning, search, data bases, fuzzy set techniques, pattern recognition and adaptive processing. Paired with CSC 871. Students completing this course may not take CSC 871 later for credit. Extra fee required.

   
CSC 675 Introduction to Database Systems
3

Prerequisite: a grade of C or better in CSC 413.

Relational query languages. Semantic data models. Logical and physical database design. Privacy Issues. Implementation techniques (catalogs, query optimization, concurrency control, security, and integrity enforcement). Paired with CSC 775. Students completing this course may not take CSC 775 later for credit. Extra fee required.

Course Syllabus
Back to Top
CSC 690 Undergraduate Seminar
3

Prerequisite: consent of instructor.

Topic to be specified in the Class Schedule. This course is used from time to time to present subjects not covered in the regular Computer Science curriculum. May be repeated for credit as topics vary.

   
CSC 693 Cooperative Education
6 or 12

Prerequisite: a U 293 or consent of instructor.

Units do not count toward the major. May be repeated for a total of 24 units. Contact the Cooperative Education office for information. CR/NC grading only.

 
   
CSC 694 Cooperative Education
3 ,6,12

Prerequisite: consent of Computer Science Department.

A detailed report on projects undertaken in a business, government, or industrial position of at least one semester's duration. For students who wish to apply work experience to academic credit. Please compare to AU (All University) 693.

Back to Top
CSC 695 Computing in the Community
2

Prerequisite: junior or senior standing, computer experience, and consent of instructor.

Extensive fieldwork training Bay Area non-profit agencies in the use of computer tools such as conferencing and database systems. Development of user documentation. CR/NC grading only.

   
CSC 697 Senior Project in Computer Science
3

Prerequisite: a grade of C or better in CSC 415, CSC 510, or CSC 640, or consent of instructor.

A culminating experien