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.
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.
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.
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.
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 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.
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 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.
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.
Introduction to using the Unix/Linux operating system. Unix/Linux file management and common text processing utilities including searching.
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.
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.
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.
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.
Formerly VMD 180
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. 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.
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.
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.
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.
UC upon review
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.
ADVISE: CS 111B and CS 211S.
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.
ADVISE: CS 112 or CS 110B or CS 111B
An advanced course in the design and development of iOS applications using Xcode and Swift.
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; 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.
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 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.
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 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.
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.