Advanced Computer Science: Complexity Theory and Advanced Algorithms

The course focuses attention on the central idea of abstraction, makes heavy use of the idea of functions as data, and discusses many of the “Big Ideas” of computing such as recursion, concurrency, simulations, algorithmic time and memory complexity, encryption, and the limits of computations. It also covers paths, cycles, and cliques in graphs. Other topics in Computer Science such as Turing Completeness, distributed computing, as well as the future of computing are briefly discussed. Most of the work for imperative and functional programming is done in Python and SNAP!

Prerequisites
You should have significant experience with the following:
(1) writing and understanding recursive functions
(2) data structures such as lists and 2D lists
(3) writing highly modular code using abstraction

This is a Trimester-Length Concentrated Course: Tuesday 8/28 – Monday 11/19/2018 (12 weeks)

Parisa Safa – Urban School
Parisa Safa is the Math Department Chair at the Urban School of San Francisco where she has been teaching since 1999. She has developed online courses for UC Berkeley. Prior to and while working at Urban, she was a software engineer at Intel, Nortel, and various startups. She has degrees in Computer Science and Mathematics.

Student Testimonials

I liked how my BlendEd course was challenging and had a wide depth and range of content.

Senior at Marin Academy, Fall 2017

I liked that there was lots of hands on work. The classwork activities weren’t just reading but a chance to practice coding and making algorithms yourself. I also found the topics very interesting.

Senior at College Prep, Fall 2017
I liked the rigor of the course. It was really challenging and even though I struggled, it was really fun and I learned a lot.
Junior at Lick-Wilmerding, Fall 2017