Skip to main content

Electives

Timeline: varies per student

After completing every required course in Core CS, students should choose a subset of courses from Advanced CS based on interest. Not every course from a subcategory needs to be taken. But students should take every course that is relevant to the field they intend to go into.

Advanced programming

Topics covered: debugging theory and practice goal-oriented programming parallel computing object-oriented analysis and design UML large-scale software architecture and design and more

CoursesDurationEffortPrerequisites
Parallel Programming4 weeks6-8 hours/weekScala programming
Compilers9 weeks6-8 hours/weeknone
Introduction to Haskell14 weeks--
Learn Prolog Now! (alternative)*12 weeks--
Software Debugging8 weeks6 hours/weekPython, object-oriented programming
Software Testing4 weeks6 hours/weekPython, programming experience

(*) book by Blackburn, Bos, Striegnitz (compiled from source, redistributed under CC license)

Advanced systems

Topics covered: digital signaling combinational logic CMOS technologies sequential logic finite state machines processor instruction sets caches pipelining virtualization parallel processing virtual memory synchronization primitives system call interface and more

CoursesDurationEffortPrerequisitesNotes
Computation Structures 1: Digital Circuits alternative 1 alternative 210 weeks6 hours/weekNand2Tetris IIAlternate links contain all 3 courses.
Computation Structures 2: Computer Architecture10 weeks6 hours/weekComputation Structures 1-
Computation Structures 3: Computer Organization10 weeks6 hours/weekComputation Structures 2-

Advanced theory

Topics covered: formal languages Turing machines computability event-driven concurrency automata distributed shared memory consensus algorithms state machine replication computational geometry theory propositional logic relational logic Herbrand logic game trees and more

CoursesDurationEffortPrerequisites
Theory of Computation (alternative)13 weeks10 hours/weekMathematics for Computer Science, logic, algorithms
Computational Geometry16 weeks8 hours/weekalgorithms, C++
Game Theory8 weeks3 hours/weekmathematical thinking, probability, calculus

Advanced Information Security

CoursesDurationEffortPrerequisites
Web Security Fundamentals5 weeks4-6 hours/weekunderstanding basic web technologies
Security Governance & Compliance3 weeks3 hours/week-
Digital Forensics Concepts3 weeks2-3 hours/weekCore Security
Secure Software Development: Requirements, Design, and Reuse7 weeks1-2 hours/weekCore Programming and Core Security
Secure Software Development: Implementation7 weeks1-2 hours/weekSecure Software Development: Requirements, Design, and Reuse
Secure Software Development: Verification and More Specialized Topics7 weeks1-2 hours/weekSecure Software Development: Implementation

Advanced math

CoursesDurationEffortPrerequisites
Essence of Linear Algebra--high school math
Linear Algebra14 weeks12 hours/weekcorequisite: Essence of Linear Algebra
Introduction to Numerical Methods14 weeks12 hours/weekLinear Algebra
Introduction to Formal Logic10 weeks4-8 hours/weekSet Theory
Probability15 weeks5-10 hours/weekDifferentiation and Integration