Courses

Computer Science

CS 110A, Intro to Programming
Lec-70 P/NP Available

ADVISE: MATH 60 or MATH 92

Introduction to computer programming and problem solving. No prior programming experience required. Course concepts include: problem solving techniques, algorithms, program design, control structures, functions, and arrays.

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

ADVISE: CS 110A or CS 111A

This course covers programming fundamentals using the C++ language. Topics include pointers, arrays, structured elements, dynamic memory allocation, and Object Oriented programming. Assignments require planning, good coding practices, and documentation.

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

PREREQ.: CS 110B.

Analysis and design of computer algorithms and the underlying data structures using an object-oriented approach. Analysis of algorithm timing and efficiency. Study of lists, stacks, queues, trees, searching, sorting, and recursion. Introduction to Unified Modeling Language (UML), heaps, graphs, tables, hashing, and direct access files. Further study of abstract data types.

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

ADVISE: CS 110A or CS 111A.

This course covers programming fundamentals using the Java language, using 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.

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 110A

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

ADVISE.: CS 155A or 150A or 151A; 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 or CS 151A or CS 155A

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 or demonstration of CS 160A exit skills

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: Prior programming experience, such as; CS 110A or CS 130A or CS 131B or CS 132A

Introduction to principal software engineering processes and pitfalls. Focus on user needs, development organizations, methodologies, testing, and tools. Use of techniques and tools including Agile Software Development, Test-Driven Development, and version control.

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, 177, and 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). You will learn how to 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 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 both via physical media and online. Also examined are virtual reality and augmented reality.

CSU
Units: 3
Credit type: Credit/Degree Applicable

Formerly VMD 180

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. How to approach these interviews, and how to solve the common kinds of problems given. 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 110A or CS 111A or prior programming experience

How to use 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.

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

ADVISE: CS 110C or CS 111C or CS 211E or CS 212 or CS 177

Large-scale individual projects in computer science to be defined in cooperation with an instructor-supervisor. The project must be 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

ADVISE: CS 111B

An advanced course in the design and development of applications for mobile devices running the Android operating system. Students will use the Android SDK and Android Studio to create programs including how to craft User Interfaces (UIs), create location-based applications, and access web services.

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

ADVISE: CS 111B

Introduces advanced Java language features and packages that are essential for building Java Standard Edition applications. Topics include multithreading, collections, generics, Swing classes, lambdas, functional programming, and streams. 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.

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; processes in the Python ecosystem; documentation, debugging, and testing; data serialization and use of persistent stores and web services; various implementations of the Python language. 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 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 or CS 132A or CS 212 ADVISE: MATH 80 or ECON 5 or PSYC 5 or LALS 5

Access and analyze data and produce information visualizations to discover patterns. Fundamental skills and concepts for Data Science, applicable for scientists, journalists, business people, and database programmers. Requires programming in a language of 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 P/NP Available

PREREQ: CS 110B or CS 111B ADVISE: CS 160A and MATH 115

Basic computer organization including the instruction cycle, parts of CPU (Central Processing Unit), memory hierarchy including caching, pipelining, exception handling, and issues of multiprocessing. Write assembly language programs using a sample architecture. Translation from high-level code is discussed. Basic hardware components and control circuits are designed in logic using combinational and sequential circuits.

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

Programming fundamentals using multiple processors or computers to solve a problem. Mechanics of computation, multi-tasking and 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.

CSU
Units: 4
Credit type: Credit/Degree Applicable