CS 12: Student-Taught Topics in Computing

Each section of CS 12 covers a topic in computing with associated sets or projects. Sections are designed and taught by an undergraduate student under the supervision of a CMS faculty member. CS 12 may be repeated for credit of up to a total of nine units.

Fall 2021

Section 1: TensorFlow

Prerequisite: CS 156a
Instructor(s): Archie Shahidullah
Supervisor(s): Adam Blank, Mike Vanier
Description: This section introduces differentiable programming for building sophisticated machine learning models using Google's TensorFlow library and the Keras API. Weekly labs will cover topics including linear and logistic regression, dense, convolutional, and recurrent neural networks, adversarial attacks, and Word2vec. Weekly recitation lectures will cover more advanced and theoretical topics such as information entropy, the manifold hypothesis, reinforcement learning, and autoencoders. CS 1-level Python programming knowledge is required and experience with machine learning equivalent to CS 156a is recommended. Additionally, basic familiarity with Linux, NumPy, and Jupyter notebooks will be assumed.

Section 2: Technical Interviewing

Prerequisite: CS 2
Instructor(s): Sarah Dunbar, Kristina Stoyanova
Supervisor(s): Adam Blank, Claire Ralph
Description: This course will cover everything you need to be successful in the technical interviewing process, focusing on the types of questions commonly seen in software engineering interviews. We will provide weekly Leetcode problems, resume help, mock interviews, and general coaching/support throughout the 10 weeks. In addition, we will go over and solve examples of essential interview problems, focusing on the application of data structures to solve coding problems and common use cases/tricks of recursion/dynamic programming. CS2-level knowledge of basic data structures and algorithms (max/min heaps, trees and binary search trees, DFS/BFS, sorting, backtracking, memoization/dynamic programming, stacks/queues/deques, linked lists, arrays/sets/hashmaps, etc) is expected, though it is completely fine to be rusty or weak in some areas. We will provide 3 hours worth of required work each week, though optional lectures and opportunities for more work will be frequent and encouraged (and there will be enough provided problems for all of your prep to be through this course if you wish). This class can be done in-person or remotely. We hope that after taking this class you will feel more comfortable and confident with the (extremely stressful) process. We are here to help!