Important links:
Name | Mike Izbicki (call me Mike) |
mizbicki@cmc.edu | |
Office | Adams 216 |
Office Hours | See Issue #235 |
Zoom | See Issue #237 |
Webpage | https://izbicki.me |
Research | Machine Learning (see izbicki.me/research.html for some past projects) |
Fun facts:
General Information:
There are no prerequisites for this course.
This course fulfills the math general ed requirements for CMC students.
But, most students find it much harder than taking MATH030 (Calculus I). If you haven't taken calculus, then you will likely have to put in about twice the amount of work on this class than you would to take calculus and get the same grade.
This course is similar to CS5 at Harvey Mudd or CS51 at Pomona (and many of the other intro CS courses at the Claremont Colleges).
If you have already taken either of those courses, then you cannot take this course.
If you are majoring in computer science at either of those schools, then you cannot take this course.
This course is designed for CMC's
This course is more practical than the Mudd/Pomona courses.
Lots of the cool applications in the Pomona/Mudd CS curriculum are "reserved" for their upper division class, but I've included them directly in this intro course.
This course is especially designed to connect computer science to non-STEM subjects like
This course cannot be taken CR/NC.
Primary Learning Objectives:
Secondary Learning Objectives:
Introduction to hacker culture and open source software
Understand basic:
Use real-world programming tools
Textbook:
There is nothing to buy for this class. All of our references are free as in beer. Some of them are also free as in speech.
Grades:
category | points/assignment | approximate percentage |
---|---|---|
labs (weekly) | 2-5pts | 20% |
quizzes (weekly) | 5pts | 40% |
projects (every 2-3 weeks) | 5-20pts | 40% |
This will be a low-stress but very challenging class.
The course is low-stress because you have full control over what your grade will be.
No midterm/final exam. Weekly quizzes ensure you don't fall behind on material, and if you bomb a quiz it's not a big deal.
You can retake 1 quiz in this class without any penalty if you don't like your grade for any reason. You must do the retake within 1 week of the original quiz date.
The first two quizzes can be retaken without any penalty.
Quizzes will be open note, and you will have "unlimited" time.
Final project due during finals week.
Most weekly labs are automatically graded by Python. Keep working on them until you get 100%.
Projects have TONs of extra credit opportunities. In the past, I've had students end the course with a 150%, and I've had other students choose not to complete certain projects because they would get an A without completing them.
The material is intrinsically very hard.
That's why we have an extra lab session each week (and so 50% more in-person instruction time). Also take advantage of office hours and the QCL.
NOTE: One point corresponds to approximately 1 hour of work for the average student to earn an A on the assignment. There will be approximately 200 points in the class, or roughly 12.5 points/week. Historically, some students need to spend 20+ hours per week to earn an A/A-.
The projects are designed to be fun, real-world projects:
Project | Difficulty | Due date will be no earlier than | |
---|---|---|---|
0 | Building a Webpage | Easy | Sunday, 11 Sep |
1 | Markdown compiler | Hard | Sunday, 02 Oct |
2 | Data visualization | Medium | Sunday, 09 Oct |
3 | Scraping ebay | Medium | Sunday, 23 Oct |
4 | Reddit propaganda bot | Hard | Sunday, 06 Nov |
5 | Twitter clone | Hard | Sunday, 11 Dec |
Your final grade will be computed according to the following table, with one caveat.
If your grade satisfies | then you earn |
---|---|
95 ≤ grade | A |
90 ≤ grade < 95 | A- |
87 ≤ grade < 90 | B+ |
83 ≤ grade < 87 | B |
80 ≤ grade < 83 | B- |
77 ≤ grade < 80 | C+ |
73 ≤ grade < 77 | C |
70 ≤ grade < 73 | C- |
67 ≤ grade < 70 | D+ |
63 ≤ grade < 67 | D |
60 ≤ grade < 63 | D- |
60 > grade | F |
CAVEAT: In order to earn an A/A- in the class, you must also complete one of the following tasks.
Watch the following shows/movies about hacking:
Season 1 of Mr. Robot (available of Amazon Prime). This is the most accurate portrayal of hacking in any movie, see for example this article and this article.
War Games (available on Amazon Prime). This is a classic hacker movie and was quite realistic for what hacking looked like when the movie was released (1983).
CitizenFour (available for free from the Internet Archive). This is a documentary about Edward Snowden and the hacking that the NSA does. There's also a live-action movie called Snowden that you could also choose to watch.
Zero Days - Security Leaks for Sale (available for free on youtube)
Read Harry Potter and the Methods of Rationality. This is a fanfic written by Eliezer Yudkowsky, who is a famous AI safety researcher. The premise is that Harry Potter's parents were both wizards and scientists, and the story introduces a lot of concepts important for AI safety and the philosophy of data science.
NOTE: This is a LONG reading (roughly the equivalent of 2-3 books). Watching the shows/movies is the most efficient option time-wise.
See Issue #260 for instructions on how to get credit for completing these readings / viewings.
Late Work Policy:
You lose 20% on labs/projects for each day late. It is still typically better to submit a correct assignment late than an incorrect one on time.
If you collaborate with other students or visit the QCL for help with an assignment, you get an automatic 2 day extension on any lab or project.
Collaboration Policy:
You are encouraged to discuss all labs and projects with other students, subject to the following constraints:
You may use any online resources you like as references.
Basically, I'm trusting you all to be adults. You are ultimately responsible for ensuring you learn the material! So do what will help you learn best.
WARNING: All material in this class is cumulative. If you work "too closely" with another student on an assignment, you won't understand how to complete subsequent assignments, and you will quickly fall behind. You should view collaboration as a way to improve your understanding, not as a way to do less work.
I've tried to design the course to be as accessible as possible for people with disabilities. (We'll talk a bit about how to design accessible software in class too!) If you need any further accommodations, please ask.
I want you to succeed and I'll make every effort to ensure that you can.