Name | Mike Izbicki (you can call me Mike) |
[email protected] | |
Office | Adams 216 |
Office Hours | Monday 9:00-10:00AM, Tuesday/Thursday 2:30-3:30PM, or by appointment (see my schedule); if my door is open, feel free to come in |
Webpage | izbicki.me |
Research | Machine Learning (see izbicki.me/research.html for some past projects) |
Fun Facts | grew up in San Clemente, 7 years in the navy, phd/postdoc at UC Riverside, taught in DPRK |
This is a second semester course in computer science designed for students who have previously taken either CS40 at CMC or CS5 at Mudd.
This course is required for the computer science sequence, and optional for the data science sequence. It will be required for the data science major (if/when it gets approved).
Learning Objectives:
Primary objectives:
- Learn basic devops and how open source software is developed
- Be able to answer the following three questions about an algorithm:
- Is it correct?
- How much resources does it consume? (time, memory, money, etc.)
- Can we do better?
Secondary objectives:
- Learn basic shell programming
- More experience with python programming
- Solve the questions asked in programming interviews and contests
- Introduction to the mathematics of programming (overlap with discrete math)
- Introduction to the hacker culture
Differences between this course and HMC's CSCI060HM/CSCI070HM:
- This course does not cover low-level memory management (C/C++ programming languages)
- This course is more practical
- There is no lab section
Textbook:
- Problem Solving with Algorithms and Data Structures using Python by Brad Miller and David Ranum
- Algorithms by Dasgupta, Papadimitriou, and Vazirani
Optional Readings:
Advice on how to be a good programmer:
- Peter Norvig (AI researcher and senior engineer at Google)
- Paul Graham (Founder of YCombinator startup incubator); being a noob
- Jeff Atwood (Founder of stackoverflow.com)
- Eric Steven Raymond, better known as esr (a famous hacker)
How to make money/get a good job:
- Yes, the median salary at facebook is $240k
- A detailed analysis of FAANG salaries, with raw data from levels.fyi
- The high-tech employee antitrust litigation
- Get jobs from GitHub/HackerNews
- /r/cscareerquestions
Other technical articles:
- Command-line tools can be faster than a hadoop cluster
- intermediate vim
- Mike's dotfiles
- The missing semester of CS education
- Larry Wall's three virtures of a programmer
- accidentally quadratic blog and a windows bug caused by an O(n^2) algorithm
- the history of git
Library documentation:
Cheat sheets:
Programming games:
- https://vim-adventures.com/
- The git game and git game v2
typespeed
(type this command on the lambda server)
Week | Date | Topic | Reading |
---|---|---|---|
1 | Tues, 21 Jan | Intro to shell / vim / git / travis | |
1 | Thur, 23 Jan | Intro to shell / vim / git / travis | |
2 | Tues, 28 Jan | Intro to shell / vim / git / travis | |
2 | Thur, 30 Jan | Python features | MR 1-2 |
3 | Tues, 04 Feb | Analysis I | MR 3, DPV 0.3 |
3 | Thur, 06 Feb | Analysis II | PythonWiki |
4 | Tues, 11 Feb | Basic data structures: stack | MR 4.1-4.9 |
4 | Thur, 13 Feb | Basic data structures: queue | MR 4.10-4.23 |
5 | Tues, 18 Feb | Recursion I | MR 5.1-5.10 |
5 | Thur, 20 Feb | Recursion II | |
6 | Tues, 25 Feb | Sorting: binary search | MR 6.3-6.4 |
6 | Thur, 27 Feb | Sorting: algorithms I | MR 6.6-6.12 |
7 | Tues, 03 Mar | Sorting: algorithms II | stackoverflow |
7 | Thur, 05 Mar | Sorting: hash functions | MR 6.5 |
8 | Tues, 10 Mar | Recursion: divide and conquer | |
8 | Thur, 12 Mar | Recursion: divide and conquer | |
9 | Tues, 17 Mar | NO CLASS: Spring Break | |
9 | Thur, 19 Mar | NO CLASS: Spring Break | |
10 | Tues, 24 Mar | Trees I | MR 7.1-7.7 |
10 | Thur, 26 Mar | Trees II | |
11 | Tues, 31 Mar | Trees: BST | MR 7.11-7.14 |
11 | Thur, 02 Apr | Trees: AVL | MR 7.15-7.17 |
12 | Tues, 07 Apr | Trees: Heaps | MR 7.8-7.10 |
12 | Thur, 09 Apr | Graphs: representations | MR 8.1-8.6 |
13 | Tues, 14 Apr | Graphs: traversals | MR 8.7-8.18 |
13 | Thur, 16 Apr | Graphs: Dijkstra | MR 8.20-8.21 |
14 | Tues, 21 Apr | Graphs: Prim | MR 8.22 |
14 | Thur, 23 Apr | Graphs: Kruskal | |
15 | Tues, 28 Apr | Recursion: dynamic programming (matrix mul) | DPV 6.5 |
15 | Thur, 30 Apr | Recursion: dynamic programming (knapsack) | DPV 6.4 |
16 | Thur, 05 May | P vs NP | DPV 8.1, 8.2 |
16 | Thur, 07 May | NO CLASS: Reading Day |
We will have approximately 1 assignment per week in this course according to the following schedule.
Assignment | Type | Points | Topic |
---|---|---|---|
1 | project | 10 | Unix/Git tutorial |
2 | math | 10 | Analysis/Big-O |
3 | project | 10 | HTML validator |
4 | project | 10 | word ladders |
5 | math | 10 | memory management |
6 | project | 10 | binary search |
7 | project | 10 | twitter data analysis |
8 | test | 20 | midterm |
9 | project | 10 | BST |
10 | project | 10 | AVL tree |
11 | project | 10 | Heaps |
12 | math | 10 | Graphs |
13 | project | 10 | Dijkstra |
14 | project | 10 | Knapsack |
15 | test | 20 | Final |
Late Work Policy:
You lose 10% on the assignment for each day late. If you have extenuating circumstances, contact me in advance of the due date and I may extend the due date for you.
It is usually better to submit a correct assignment late than an incorrect one on time.
Collaboration Policy:
For project/math assignments: you may use any resources you like and discuss with whomever you like. Learning the material in this course is your responsibility, and I don't want to put any artificial restrictions on any of the assignments that will get in your way.
Tests will be take home and open notes. The only restriction is you are not allowed to talk to other students in the class about the contents.
Technology Policy:
You must use either vim or emacs to complete all programming assignments.
You must not share your lambda-server password with anyone else.
Extra credit:
If you submit a pull request to this repo that gets accepted (e.g. you fix a typo), then you will get extra credit. The first time you do this, you will get 1 point of extra credit; subsequent times you will get less.
If you make a contribution to an open source project during the course, you will get extra credit depending on the magnitude of your contribution. See https://up-for-grabs.net for some projects that are looking for new contributors.
I want you to succeed and I'll make every effort to ensure that you can. If you need any accommodations, please ask.
If you have already established accommodations with Disability Services at CMC, please communicate your approved accommodations to me at your earliest convenience so we can discuss your needs in this course. You can start this conversation by forwarding me your accommodation letter. If you have not yet established accommodations through Disability Services, but have a temporary health condition or permanent disability (conditions include but are not limited to: mental health, attention-related, learning, vision, hearing, physical or health), you are encouraged to contact Assistant Dean for Disability Services & Academic Success, Kari Rood, at [email protected] to ask questions and/or begin the process. General information and the Request for Accommodations form can be found at the CMC DOS Disability Service’s website. Please note that arrangements must be made with advance notice in order to access the reasonable accommodations. You are able to request accommodations from CMC Disability Services at any point in the semester. Be mindful that this process may take some time to complete and accommodations are not retroactive. It is important to Claremont McKenna College to create inclusive and accessible learning environments consistent with federal and state law. If you are not a CMC student, please connect with the Disability Services Coordinator on your campus regarding a similar process.