Skip to content

Instantly share code, notes, and snippets.

@LuisRBarreras
Created August 10, 2015 20:15
Show Gist options
  • Save LuisRBarreras/2c71e953fc3c6db59018 to your computer and use it in GitHub Desktop.
Save LuisRBarreras/2c71e953fc3c6db59018 to your computer and use it in GitHub Desktop.
Where to Start
--------------------------------------------
Friedman, The Little Schemer
K&R, The C Programming Languaage
Graham, ANSI Common Lisp
SICP
Bloch, Effective Java
Sedgewick, Algorithms
=============================================
What languages people learn first
Traditional Route:
C -> Java -> Other (Clojure, Go/Rust, C#, D)
Used to be
C -> C++, but Java replaced C++ because C++
gained too much complexity
MIT Route:
LISP -> Java -> C
Modern Route:
Python -> Java / C#
=============================================
Ideal CS Ciriculum
--------------------------------------------
~~~Fall 1~~~
Calculus I
Intro to Proofs and Abstract Mathematics
Physics I
Intro to Programming
Technical Writing
~~~Spring 1~~~
Calculus II
Matrix Algebra
Physics II
Digital Logic and Automata
Data Structures
~~~Fall 2~~~
Vector Calculus
Physics III
Electrical Engineering Fundamentals
Computer Architecture
Algorithm I
~~~Spring 2~~~
Ordinary Differential Equations
Probability and Statistics
Parallel, Distributed, and GPU Programming
Operating Systems
Algorithm II
~~~Fall 3~~~
Numerical Analysis I
Combinatorics and Graph Theory I
Mathematical Logic
Digital Signal Processing
Programming Languages and Compilers I
~~~Spring 3~~~
Numerical Analysis II
Combinatorics and Graph Theory II
College Geometry
Computability and Complexity Theory
Compilers II
Database Theory (Seminar)
~~~Fall 4~~~
Abstract Algebra
Classical Number Theory
Computer Graphics and Vision
Artificial Intelligence and Machine Learning
Internet, Networks and Communication Systems
Professionalism, Ethics, and Conduct (Seminar)
~~~Spring 4~~~
Linear Programming and Optimization
Computer Security and Cryptography
FPGAs, Microcontrollers and Driver Development
Software Engineering Essentials
Principles of Economics
Personal Grooming and Hygiene (Seminar)
Alternative
--------------------------------------------
1st semester
>Unix Introduction
>C Introduction
>Essential Data Structures: Linked Lists, Binary Trees, and Hash Tables in C
>Essential Algorithms: Sorting and Searching
>Project Management and Maintenance
>textbooks: The UNIX Programming Environment, Programming in C; The Practice of Programming
2nd semester
>Scheme Introduction
>SICP
>textbook: Structure and Interpretation of Computer Programs
3rd semester
>Concurrent Programming in Go
>Network Programming in Go
>Graphs and Why You'd Want Them
>Using yacc
>Parsing and Interpreting Non-Metacircularly
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment