Computer Science Courses

CS 10, Introduction to Computer Science
Lec-70 P/NP Available

PREREQ: Intermediate algebra or higher ADVISE: Readiness for college-level English or ESL 188

Broad introduction to fundamental concepts in computer science. Investigate how computers store and transmit information, how to solve problems with computers by designing and implementing algorithms, and how computing fits into larger social issues.

CSU
Units: 4
Credit type: Credit/Degree Applicable
CS 110A, Introduction to Programming and Computer Science
Lec-70

ADVISE: (Intermediate algebra or higher) and (Readiness for college-level English or ESL 188)

Broad introduction to fundamental concepts in computer science. Investigate how computers store and transmit information, how to design and implement algorithms using a programming language, and how computing fits into larger social issues.

UC/CSU
Units: 4
Credit type: Credit/Degree Applicable
CS 110B, Programming Fundamentals: C++
Lec-70

ADVISE: CS 10 or CS 110A or MATH 108

This course covers programming fundamentals using the C++ language, using procedural and object-oriented approaches to problem solving. Topics include structured elements, classes, objects, references, dynamic memory allocation, inheritance, polymorphism, arrays, pointers, files, design and implementation of abstract data types, in numerical and non-numerical applications.

UC/CSU
Units: 4
Credit type: Credit/Degree Applicable
CS 110C, Data Structures and Algorithms: C++
Lec-70

PREREQ: CS 110B

The analysis and design of computer algorithms and their underlying data structures. Analysis of the timing and efficiency of algorithms. Study of lists, stacks, queues, trees, backtracking, searching, sorting and recursion. Introduction to graphs, hash tables, heaps, priority queues and direct access files. Further study of abstract data types and object-oriented programming.

UC/CSU
Units: 4
Credit type: Credit/Degree Applicable
CS 111B, Programming Fundamentals: Java
Lec-70

ADVISE: CS 10 or CS 110A or MATH 108

This course covers programming fundamentals using the Java language, emphasizing an object-oriented approach to problem solving. Topics include classes, objects, references, dynamic memory allocation, inheritance, polymorphism, arrays, files, design and implementation of abstract data types, in numerical and non-numerical applications.

UC/CSU
Units: 4
Credit type: Credit/Degree Applicable
CS 111C, Data Structures and Algorithms: Java
Lec-70

PREREQ: CS 111B.

The analysis and design of computer algorithms and their underlying data structures. Analysis of the timing and efficiency of algorithms. Study of lists, stacks, queues, trees, backtracking, searching, sorting and recursion. Introduction to graphs, hash tables, heaps, priority queues and direct access files. Further study of abstract data types and object-oriented programming.

UC/CSU
Units: 4
Credit type: Credit/Degree Applicable
CS 112, Beginning iPhone Programming using Swift
Lec-70 P/NP Available

This course provides a hands-on, project-based curriculum for first-time programmers to learn the very basics of computer programming using the Swift language. Students will learn how to use variables, basic logic, and simple object-oriented programming to create working apps.

UC/CSU
Units: 4
Credit type: Credit/Degree Applicable
CS 130A, PHP Programming
Lec-70 P/NP Available

ADVISE: CNIT 132 or demo of exit skills; and CS 110A or 111A or similar programming experience

Introduction to the open source Web scripting language PHP. Build dynamic Web applications. Semantics and syntax of the PHP language, including discussion on the practical problems that PHP solves. Write server-side cross-platform HTML-embedded scripts to implement dynamic Web pages that interact with databases and files.

CSU
Units: 4
Credit type: Credit/Degree Applicable
CS 130B, Advanced PHP Programming
Lec-52.5 P/NP Available

ADVISE: CS 130A

This class covers using PHP for database connectivity to build scalable, dynamic websites. Assignments emphasize using PHP for user authentication, site personalization, content management, session tracking, and user-driven database updating. Class project demonstrates using PHP and a database (MySQL) to build a scalable, object oriented, template-based web application.

CSU
Units: 3
Credit type: Credit/Degree Applicable
CS 131B, Programming Fundamentals: Python
Lec-70 P/NP Available

ADVISE: CS 10 or CS 110A or MATH 108

This course covers programming fundamentals using the Python language. Python is interpreted, interactive, and object-oriented. Recommended for general-purpose programming, system administration, or web programming. Topics include classes, objects, inheritance, polymorphism, design and implementation of abstract data types, dictionaries, lists, list comprehensions, files, modules, and mutable and immutable types.

UC/CSU
Units: 4
Credit type: Credit/Degree Applicable

Formerly CS 131A

CS 132A, Ruby Programming
Lec-52.5 P/NP Available

ADVISE: CS 110A or CS 130A or CS 160B or 160B

Ruby is interpreted, interactive, and object-oriented. Recommended for general-purpose programming, system administration, or web programming with the Ruby on Rails web framework. Write stand-alone programs that perform tasks including interfacing or system calls and libraries, processing text using regular expressions, and retrieving information from web sites.

CSU
Units: 3
Credit type: Credit/Degree Applicable
CS 142, Programming Techniques for XML
Lec-52.5 P/NP Available

ADVISE: CS 110A or CS 130A or CS 131B or CS 132A or CS 160B

Programming techniques for processing XML data. Comparison of programming approaches, including SAX, SAX-like, and DOM interfaces. Navigating, filtering, and modifying XML. Transformation of XML data. Use of XML with databases and serialization.

CSU
Units: 3
Credit type: Credit/Degree Applicable
CS 150A, Introduction to SQL Databases and NoSQL
Lec-52.5 P/NP Available

A course in the use of SQL database management systems to create, query, and update database tables. The course covers both the syntax and the logic of the major features of the SQL language. It also covers a brief overview of NoSQL (Not Only SQL) data sources such as JSON and MongoDB.

CSU
Units: 3
Credit type: Credit/Degree Applicable
CS 155B, MySQL Database Administration
Lec-52.5 P/NP Available

ADVISE: CS 150A and CS 160B

Students install and configure a MySQL server and create and manage user accounts. Issues
pertaining to optimization, security, privileges, tuning, troubleshooting, and performing upgrades are
studied and practiced.

CSU
Units: 3
Credit type: Credit/Degree Applicable
CS 155P, MySQL Programming
Lec-52.5 P/NP Available

ADVISE: CS 150A

An advanced course in the use of MySQL techniques to process database objects. Design and develop MySQL program units: stored procedures, functions, and database triggers. Work with dynamic SQL and with XML data.

CSU
Units: 3
Credit type: Credit/Degree Applicable
CS 160A, Introduction to Unix/Linux
Lec-35 P/NP Available

Introduction to using the Unix/Linux operating system. Unix/Linux file management and common text processing utilities including searching.

UC/CSU
Units: 2
Credit type: Credit/Degree Applicable
CS 160B, Unix/Linux Shell Scripting
Lec-35 P/NP Available

ADVISE: CS 160A

Analyze, design, write, test, and debug shell scripts. Students learn basic shell scripting techniques and develop scripting skills needed for Unix/Linux System Administration courses. The bash shell is used.

UC/CSU
Units: 2
Credit type: Credit/Degree Applicable
CS 177, Software Engineering
Lec-52.5 P/NP Available

ADVISE: Some programming experience

Introduction to principal software engineering processes and pitfalls. Focus on users, development methodologies, testing, and tools. Use of techniques including version control, functional specification, Agile and Test-Driven Development.

UC/CSU
Units: 3
Credit type: Credit/Degree Applicable
CS 178, Build Automation for DevOps & QA
Lec-52.5 Lab-17.5 P/NP Available

ADVISE: CS 132A and CS 177 and CS 260A

Development and Operations (DevOps) is the use of build automation tools to automate provisioning, configuration, monitoring, and management of data centers and networks. These same tools are used to automatically build and test software for Quality Assurance (QA). Design tests and use tools like Jenkins to execute planned systematic actions that provide confidence in a software product under development, and its infrastructure.

CSU
Units: 3
Credit type: Credit/Degree Applicable
CS 185, Exploring Game Worlds
Lec-52.5 P/NP Available

ADVISE: VMD 105

Utilizing the Unity game engine and a range of additional tools, this course is an introduction to the career opportunities in the games industry. Students will learn how individual games are made, distributed, and sold via both physical media and online. Virtual reality and augmented reality will also be examined.

CSU
Units: 3
Credit type: Credit/Degree Applicable
CS 186, XR: Games, Virtual and Augmented Reality using Unity
Lec-52.5 field trips P/NP Available

ADVISE: CS 185; VMD 166

Develops fundamental skills in the use of the Unity 3D game engine to develop games and X Reality (XR or Cross Reality), including virtual reality, augmented reality and simulations or 'experiences'. Students will design independently and as part of a team. Also covers workflow itself - time and resource management, planning and production strategies for entertainment products.

CSU
Units: 3
Credit type: Credit/Degree Applicable

Formerly VMD 182

CS 195, Software Development Practicum
Lec-52.5 field trips P/NP Available

ADVISE: CS 177 or CS 131B or CS 111B or CS 110B or CS 132A or CS 130A or CS 150A

Integrate and apply knowledge gained through CCSF coursework in a team-based environment, collaborating with students in Visual Media Design's VMD 200A/B: Design Studio Practicum. Work on realistic projects with input invited from local employers. Develop, design and program a professional software project in a team environment.

CSU
Units: 3
Credit type: Credit/Degree Applicable
CS 197P, Technical Interview Preparation
Lec-17.5 P/NP Only

PREREQ: Completion of or concurrent enrollment in: CS 110C or CS 111C

Preparation for programming job interviews: problem-solving and algorithm questions solved on a white board or online chat, approaches to technical interviews, and solving common kinds of problems. Requires prior experience programming Data Structures and Algorithms in C++, Java, or similar.

CSU
Units: 1
Credit type: Credit/Degree Applicable
CS 197V, Version Control and Online Code Repositories
Lec-17.5 P/NP Only

ADVISE: CS 10 or MATH 108 or prior programming experience

Using version control software such as Git and online code repositories such as GitHub. Use these systems for team collaboration in software development, and to present work online as a portfolio for job applications. Set up an online code repository as a portfolio for employers to assess what kind of programming experience an applicant has.

CSU
Units: 1
Credit type: Credit/Degree Applicable
CS 198, Industry Internship
P/NP Available

Provides students with the opportunity to earn course and certificate credit for working in the field, in a supervised setting in the ICT/Computer Science industry. Internships include software quality assurance (QA), junior developer, database programmer or administrator, Linux system administrator, etc. One unit of credit is earned for 54 hours of unpaid or paid work.

CSU
Units: 1
Credit type: Credit/Degree Applicable
CS 199, Independent Study
Lab-52.5 to 157.5 P/NP Available

ADVISE: CS 110C or CS 111C or CS 160B or CS 177 or CS 211S or CS 211D or CS 212 or CS 214U or CS 231 or CS 232 or CS 256 or CS 280

Large-scale individual projects in computer science to be defined in cooperation with an instructor/supervisor. The project must be in in an area not covered by other course offerings. The student is responsible for the project definition and completion under the guidance of an instructor/supervisor.

CSU
Units: 1
Credit type: Credit/Degree Applicable

UC upon review

CS 211D, Android Programming
Lec-52.5 P/NP Available

PREREQ: CS 111B

An advanced course in the design and development of applications for mobile devices running the Android operating system. Use the Android SDK and Android Studio to craft user interfaces (UIs) and create applications that make use of web services, long-term storage, user location, and media.

CSU
Units: 3
Credit type: Credit/Degree Applicable
CS 211E, Advanced Java: Enterprise
Lec-52.5 P/NP Available

ADVISE: CS 111B and CS 211S

Advanced Java Enterprise Edition covers features of the Java language essential for building network- and web-oriented applications. Topics include networking, Java Database Connectivity (JDBC), Servlets, JavaBeans, JavaServer Pages (JSP), Remote Method Invocation (RMI), JavaScript Object Notation (JSON), and Extensible Markup Language (XML).

UC/CSU
Units: 3
Credit type: Credit/Degree Applicable
CS 211S, Advanced Java: Standard Edition
Lec-52.5

PREREQ: CS 111B

Introduces advanced Java language features and packages that are essential for building Java Standard Edition applications. Topics include object-oriented design, updated Java features, file input and output, exception handling, collections, generics, graphical user interfaces (GUIs), functional programming, reflection, and multithreading. Helps prepare students for industry certification in Java programming.

UC/CSU
Units: 3
Credit type: Credit/Degree Applicable
CS 212, iPhone Programming
Lec-70 P/NP Available

ADVISE: CS 112 or CS 110B or CS 111B

An advanced course in the design and development of iOS applications using Xcode and Swift. Overview of object-oriented programming in Swift. Development of user interfaces with Storyboard. Development of iOS applications using the model-view-controller paradigm, persistent storage, and networked data.

UC/CSU
Units: 4
Credit type: Credit/Degree Applicable
CS 214U, Game and Simulation Programming in Unity
Lec-70 P/NP Available

PREREQ: CS 110B or CS 111B

This course provides students with the opportunity to learn computer science concepts in the context of game and simulation development. Data algorithms, behavioral algorithms, memory management, object and class hierarchy, and Unity's architectural pattern will be presented.

CSU
Units: 4
Credit type: Credit/Degree Applicable
CS 230W, WordPress and Drupal CMS Development
Lec-52.5 P/NP Available

ADVISE: CS 130A and CNIT 132 and CS 160A

This course introduces students to creating and deploying WordPress and Drupal content management systems (CMS) for web development using custom plug-ins and modules. Topics include WordPress and Drupal core features, APIs, plug-in and module development, architecture, deploying to cloud hosting, PHP performance tuning, data management, and security.

CSU
Units: 3
Credit type: Credit/Degree Applicable
CS 231, Advanced Python Programming
Lec-52.5 P/NP Available

PREREQ: CS 131B

Second course in the Python programming language. Covers resources, practices, and modules used by successful Python programmers; functional and imperative programming in Python; debugging and testing; data serialization and use of persistent stores and web services. Students write useful programs demonstrating mastery of these techniques, which are applicable to real world problems.

UC/CSU
Units: 3
Credit type: Credit/Degree Applicable

CS 131A may be used to satisfy the prerequisite. Please contact the Computer Sciences Department for more information.

CS 232, Ruby on Rails Development
Lec-52.5 P/NP Available

ADVISE: CNIT 132 and CS 132A

Developing data driven web applications with Ruby on Rails. Core aspects of the framework including ActiveRecord, HTML with embedded Ruby (ERB), Rails Controller classes, Action Mailer, and application testing.

CSU
Units: 3
Credit type: Credit/Degree Applicable
CS 256, Data Visualization
Lec-52.5 P/NP Available

PREREQ: CS 131B or CS 111B or CS 110B ADVISE: MATH 80 or ECON 5 or PSYC 5 or LALS 5 or MATH 108

Access and analyze data and produce information visualizations to discover patterns. Fundamental skills and concepts for data science applicable to scientists, journalists, business people, and database programmers. Requires programming in a language of the student's choice.

CSU
Units: 3
Credit type: Credit/Degree Applicable
CS 260A, Linux System Administration
Lec-70 P/NP Available

ADVISE: CS 160B

The administration of a Linux server. Prepares students for industry certification and entry-level employment in system administration. Topics include process control, system monitoring, filesystem preparation and maintenance, logical volumes, basic servers and the firewall, virtual machines, startup and shutdown, user accounts, periodic tasks, security issues, and installations.

CSU
Units: 4
Credit type: Credit/Degree Applicable
CS 270, Computer Architecture with Assembly Language
Lec-70

PREREQ: CS 110B or CS 111B ADVISE: CS 160A

Basic computer organization including the von Neumann architecture, the instruction cycle, parts of a CPU (central processing unit), pipelining, memory hierarchy, and interrupt handling. Representation of numerical and non-numerical data. Translation to assembly code from high-level constructs such as if statements, loops, and function calls.

UC/CSU
Units: 4
Credit type: Credit/Degree Applicable
CS 280, Introduction to Parallel and Cloud Programming
Lec-70 Lab-17.5 P/NP Available

ADVISE: CS 110B or CS 111B or CS 131B

Programming fundamentals using multiple processors or computers to solve a problem. Mechanics of computation, multi-tasking, multi-threading, and object-oriented approaches to managing many computing elements working on the same problem. Programming for Cloud computation, Big Data access, and highly parallel computing hardware, e.g. multi-core processors and Graphics Processing Units (GPU).

CSU
Units: 4
Credit type: Credit/Degree Applicable