The goal of this program is for you to learn the intellectual concepts and skills that are part of advanced work in computer science.
This program will explore what computers can do, how we get them to do it, and what they can't do. It is designed for advanced computer science students and math students with an interest computer science. The program covers a selection of topics which could include formal computer languages, computability theory, functional programming, algorithms, database systems, numerical analysis, cloud computing, or programming language design and implementation.
These topics are offered in four distinct threads each quarter. We will explore these themes throughout the program by way of lectures, programming labs, workshops, and seminars.
In winter, a thread on computing theory covers topics in formal languages and computability. The programming language thread explores topics in how algorithms are implemented as computer programs, for example, language implementation issues or programming languages paradigms: imperative, object oriented, functional, or logic programming. A thread in cloud computing will cover topics such as: could computing fundamental concepts, cloud computing architectural components, Microsoft Azure fundamentals, Compute Services, Storage Services, Networking Services, Cloud Network Security, Privacy, Compliance, and Data Protection Standards in Azure. A thread in databases will cover topics such as: introduction to relational databases, data retrieval from tables, summary queries, database design and implementation, views, scripts, and if time: database security.
In spring, a thread in numerical analysis will cover topics such as: solving non-linear equations, polynomial interpolation, numerical differentiation, numerical integration, and spline interpolation. There will also be threads in algorithms, in Web development (ASP .Net core MVC), and machine learning.
To successfully participate in the program students need access to a computer and reliable internet service. Students should expect 16 hours of synchronous meeting time per week using Zoom and Canvas. Students will have access to alternatives to synchronous participation if conditions require – in particular, we may record the class lectures and make them available to all class participants. Students can work with faculty to pursue these alternatives to earn related credit.
Students are expected to have completed Data Structures and Algorithms or the equivalent, including 1) writing, debugging and reading complex programs in an object-oriented language such as Java or C++, 2) computing the space and time complexity of moderately complex algorithms, and 3) implementing and using standard data structures, such as lists, stacks, queues, heaps, search trees, hash tables, and graphs.
In addition, some experience programming in Python is desirable.
Transfer students are encouraged to contact the faculty for clarity on meeting the prerequisites.
This program has four threads of study with variable credit options. Full-time students will be accepted if they have course work or experience equivalent to fall quarter material (Data Structures and Algorithms). Students should email the faculty with a brief statement of how they have met the prerequisites. For variable credit options, students should check with the faculty about the requirements for individual components. In all cases, students should have completed the equivalent of Computer Science Foundations.
Course Reference Numbers
This program has four threads of study with variable credit options. Full-time students will be accepted if they have course work or experience equivalent to the winter quarter material. Students should email the faculty with a brief statement of how they have met the prerequisites.
Course Reference Numbers
computer science, mathematics, information technology, education
All parts of the program cover upper-division material. Upper-division credit will be awarded for successful completion of upper-division work.