|
| 1 | +--- |
| 2 | +sidebar_position: 6 |
| 3 | +--- |
| 4 | + |
| 5 | +# Electives |
| 6 | + |
| 7 | +*Timeline: varies per student* |
| 8 | + |
| 9 | +After completing **every required course** in Core CS, students should choose a subset of courses from Advanced CS based on interest. |
| 10 | +Not every course from a subcategory needs to be taken. |
| 11 | +But students should take *every* course that is relevant to the field they intend to go into. |
| 12 | + |
| 13 | +#### Advanced programming |
| 14 | + |
| 15 | +**Topics covered**: |
| 16 | +`debugging theory and practice` |
| 17 | +`goal-oriented programming` |
| 18 | +`parallel computing` |
| 19 | +`object-oriented analysis and design` |
| 20 | +`UML` |
| 21 | +`large-scale software architecture and design` |
| 22 | +`and more` |
| 23 | + |
| 24 | +Courses | Duration | Effort | Prerequisites |
| 25 | +:-- | :--: | :--: | :--: |
| 26 | +[Parallel Programming](https://www.coursera.org/learn/scala-parallel-programming)| 4 weeks | 6-8 hours/week | Scala programming |
| 27 | +[Compilers](https://www.edx.org/learn/computer-science/stanford-university-compilers) | 9 weeks | 6-8 hours/week | none |
| 28 | +[Introduction to Haskell](https://www.seas.upenn.edu/~cis194/fall16/)| 14 weeks | - | - |
| 29 | +[Learn Prolog Now!](https://www.let.rug.nl/bos/lpn//lpnpage.php?pageid=online) ([alternative](https://github.com/ossu/computer-science/files/6085884/lpn.pdf))*| 12 weeks | - | - |
| 30 | +[Software Debugging](https://www.youtube.com/playlist?list=PLAwxTw4SYaPkxK63TiT88oEe-AIBhr96A)| 8 weeks | 6 hours/week | Python, object-oriented programming |
| 31 | +[Software Testing](https://www.youtube.com/playlist?list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) | 4 weeks | 6 hours/week | Python, programming experience |
| 32 | + |
| 33 | +(*) book by Blackburn, Bos, Striegnitz (compiled from [source](https://github.com/LearnPrologNow/lpn), redistributed under [CC license](https://creativecommons.org/licenses/by-sa/4.0/)) |
| 34 | + |
| 35 | +#### Advanced systems |
| 36 | + |
| 37 | +**Topics covered**: |
| 38 | +`digital signaling` |
| 39 | +`combinational logic` |
| 40 | +`CMOS technologies` |
| 41 | +`sequential logic` |
| 42 | +`finite state machines` |
| 43 | +`processor instruction sets` |
| 44 | +`caches` |
| 45 | +`pipelining` |
| 46 | +`virtualization` |
| 47 | +`parallel processing` |
| 48 | +`virtual memory` |
| 49 | +`synchronization primitives` |
| 50 | +`system call interface` |
| 51 | +`and more` |
| 52 | + |
| 53 | +Courses | Duration | Effort | Prerequisites | Notes |
| 54 | +:-- | :--: | :--: | :--: | :--: |
| 55 | +[Computation Structures 1: Digital Circuits](https://learning.edx.org/course/course-v1:MITx+6.004.1x_3+3T2016) [alternative 1](https://ocw.mit.edu/courses/6-004-computation-structures-spring-2017/) [alternative 2](https://ocw.mit.edu/courses/6-004-computation-structures-spring-2009/) | 10 weeks | 6 hours/week | [Nand2Tetris II](https://www.coursera.org/learn/nand2tetris2) | Alternate links contain all 3 courses. |
| 56 | +[Computation Structures 2: Computer Architecture](https://learning.edx.org/course/course-v1:MITx+6.004.2x+3T2015) | 10 weeks | 6 hours/week | Computation Structures 1 | - |
| 57 | +[Computation Structures 3: Computer Organization](https://learning.edx.org/course/course-v1:MITx+6.004.3x_2+1T2017) | 10 weeks | 6 hours/week | Computation Structures 2 | - |
| 58 | + |
| 59 | +#### Advanced theory |
| 60 | + |
| 61 | +**Topics covered**: |
| 62 | +`formal languages` |
| 63 | +`Turing machines` |
| 64 | +`computability` |
| 65 | +`event-driven concurrency` |
| 66 | +`automata` |
| 67 | +`distributed shared memory` |
| 68 | +`consensus algorithms` |
| 69 | +`state machine replication` |
| 70 | +`computational geometry theory` |
| 71 | +`propositional logic` |
| 72 | +`relational logic` |
| 73 | +`Herbrand logic` |
| 74 | +`game trees` |
| 75 | +`and more` |
| 76 | + |
| 77 | +Courses | Duration | Effort | Prerequisites |
| 78 | +:-- | :--: | :--: | :--: |
| 79 | +[Theory of Computation](https://ocw.mit.edu/courses/18-404j-theory-of-computation-fall-2020/) ([alternative](https://www.youtube.com/playlist?list=PLEE7DF8F5E0203A56)) | 13 weeks | 10 hours/week | [Mathematics for Computer Science](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about), logic, algorithms |
| 80 | +[Computational Geometry](https://www.edx.org/learn/geometry/tsinghua-university-ji-suan-ji-he-computational-geometry) | 16 weeks | 8 hours/week | algorithms, C++ |
| 81 | +[Game Theory](https://www.coursera.org/learn/game-theory-1) | 8 weeks | 3 hours/week | mathematical thinking, probability, calculus |
| 82 | + |
| 83 | +#### Advanced Information Security |
| 84 | + |
| 85 | +Courses | Duration | Effort | Prerequisites |
| 86 | +:-- | :--: | :--: | :--: |
| 87 | +[Web Security Fundamentals](https://www.edx.org/learn/computer-security/ku-leuven-web-security-fundamentals) | 5 weeks | 4-6 hours/week | understanding basic web technologies |
| 88 | +[Security Governance & Compliance](https://www.coursera.org/learn/security-governance-compliance) | 3 weeks | 3 hours/week | - |
| 89 | +[Digital Forensics Concepts](https://www.coursera.org/learn/digital-forensics-concepts) | 3 weeks | 2-3 hours/week | Core Security |
| 90 | +[Secure Software Development: Requirements, Design, and Reuse](https://www.edx.org/learn/software-development/the-linux-foundation-secure-software-development-requirements-design-and-reuse) | 7 weeks | 1-2 hours/week | Core Programming and Core Security |
| 91 | +[Secure Software Development: Implementation](https://www.edx.org/learn/software-development/the-linux-foundation-secure-software-development-implementation) | 7 weeks | 1-2 hours/week | Secure Software Development: Requirements, Design, and Reuse |
| 92 | +[Secure Software Development: Verification and More Specialized Topics](https://www.edx.org/learn/software-engineering/the-linux-foundation-secure-software-development-verification-and-more-specialized-topics) | 7 weeks | 1-2 hours/week | Secure Software Development: Implementation |
| 93 | + |
| 94 | +#### Advanced math |
| 95 | + |
| 96 | +Courses | Duration | Effort | Prerequisites |
| 97 | +:-- | :--: | :--: | :--: |
| 98 | +[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | [high school math](/precollege-math/index.md) |
| 99 | +[Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | 14 weeks | 12 hours/week | corequisite: Essence of Linear Algebra |
| 100 | +[Introduction to Numerical Methods](https://ocw.mit.edu/courses/mathematics/18-335j-introduction-to-numerical-methods-spring-2019/index.htm)| 14 weeks | 12 hours/week | [Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) |
| 101 | +[Introduction to Formal Logic](https://forallx.openlogicproject.org/) | 10 weeks | 4-8 hours/week | [Set Theory](https://www.youtube.com/playlist?list=PL5KkMZvBpo5AH_5GpxMiryJT6Dkj32H6N) |
| 102 | +[Probability](https://stat110.hsites.harvard.edu/) | 15 weeks | 5-10 hours/week | [Differentiation and Integration](https://www.edx.org/course/calculus-1b-integration) |
| 103 | + |
0 commit comments