Computer Science Courses
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Formerly CS 131A
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.
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.
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.
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.
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.
Introduction to using the Unix/Linux operating system. Unix/Linux file management and common text processing utilities including searching.
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.
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.
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.
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.
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.
Formerly VMD 182
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.
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.
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.
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.
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.
UC upon review
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.
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).
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.
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.
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.
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.
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.
CS 131A may be used to satisfy the prerequisite. Please contact the Computer Sciences Department for more information.
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.
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.
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.
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.
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).