Skip to content

mikeizbicki/cmc-csci040

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CSCI040: Computing for the Web Introduction to Hacking

Important links:

  1. What Hackers get Paid

  2. Tech employers illegally collude to reduce salaries

About the Instructor

Name Mike Izbicki (call me Mike)
Email [email protected]
Office Adams 216
Office Hours See Issue #321
Zoom See Issue #322
Webpage https://izbicki.me
Research Machine Learning (see izbicki.me/research.html for some past projects)

Fun facts:

  1. grew up in San Clemente (~1 hr south of Claremont)
  2. 7 years in the navy
    1. nuclear submarine officer, personally converted >10g of uranium into pure energy
    2. worked at National Security Agency (NSA)
    3. left Navy as a conscientious objector
  3. phd/postdoc at UC Riverside
  4. taught in DPRK (i.e. North Korea)

About the Course

General Information:

  1. There are no prerequisites for this course.

  2. 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.

  3. This course is similar to CS4 at Pitzer, CS5 at Harvey Mudd, and CS51 at Pomona.

    1. If you have already taken any of those courses, then you cannot take this course for credit. (Audit is okay.)
    2. If you are majoring in computer science, then you cannot take this course.
    3. This course is designed for CMC's
      1. data science major,
      2. data science sequence,
      3. and computer science sequence.
    4. This course is more practical (and fun!) than the other CS courses.
      1. 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.
      2. You will:
        1. Use LLMs (e.g. ChatGPT) to code. (And learn what they can/can't do.)
        2. Count the number of computers in North Korea connected to the internet.
        3. Build your own Twitter clone.
      3. This course is especially designed to connect computer science to non-STEM subjects like
        1. economics,
        2. government,
        3. literature, and
        4. history.

Primary Learning Objectives:

  1. Automate boring tasks <-- this is a hacker's primary goal

  2. Create static and dynamic web pages

  3. Understand the basics of many programming languages:

    1. HTML
    2. CSS
    3. JavaScript
    4. Markdown
    5. Jinja
    6. SQL
    7. and Python <-- this is the main focus of the course

Secondary Learning Objectives:

  1. Introduction to hacker culture and open source software

  2. Understand basic:

    1. internet infrastructure
    2. common programming jargon
      1. "front end" versus "back end" development
      2. test driven development
    3. accessible development
      1. allow blind people to use webpages
      2. allow non-English speaking / non-Americans to use your software
    4. web security
      1. technical details (you will learn to commit fraud in this class... but obviously you shouldn't!)
      2. social implications
      3. government policy
      4. legal issues
    5. search engine optimization
  3. Use real-world programming tools

    1. Python libraries actually in use at FAANG companies

    2. GitHub (which is different than git, something we'll learn in the follow-on class CS46)

    3. LLMs

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.

  1. Shay Howe's Learn to Code HTML & CSS.
  2. Al Sweigart's Automate the Boring Stuff with Python.
  3. Lots of other online resources as provided in the weekly schedule.

Grades:

category points/assignment approximate percentage
labs (weekly) 2**1 - 2**2 20%
quizzes (weekly) 2**2 - 2**3 40%
projects (every 2-3 weeks) 2**3 - 2**6 40%

This will be a low-stress but very challenging class.

  1. The course is low-stress because you have full control over what your grade will be.

    1. 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.

      1. Quizzes will be open note, and you will have "unlimited" time.

      2. Final project due during finals week.

    2. Most weekly labs are automatically graded by Python. Keep working on them until you get 100%.

    3. Projects have TONs of extra credit opportunities.

      Lots of "choose your own adventure" style assignments where you get to decide which tasks you want to complete.

      In the past, some students have: 1. ended the course with a 150%, 1. choosen not to complete certain projects because they would get an A without completing them, 1. go from a 70% to a 100% in the class with the final project.

  2. The material is intrinsically very hard.

    1. That's why CS/DS majors get paid so much money... there's not many people willing to work hard enough to master these concepts.

    2. 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.

      Historically:

      1. The average student needs to spend about 10 hours per week outside of class to get an A.
      2. About 50% of students choose to either:
        1. spend 15-20 hours per week and get an A-/A,
        2. or spend 10 hours per week and get a B/C.
  3. The projects are designed to be fun, real-world projects:

    Project Difficulty
    0 Building a Webpage Easy
    1 Markdown compiler Hard
    2 Data visualization Medium
    3 Scraping ebay Medium
    4 Reddit propaganda bot (maybe swap out with LLM-specific RAG assignment) Hard
    5 Twitter clone Hard

    This class has fewer projects than in CS4/CS5/CS51. (Those courses have 1 project per week.)

    Our projects more fun/interesting. (But maybe a bit harder.)

    Our projects emphasize techniques that LLMs cannot do by themselves. (And I will teach you how to use LLMs productively to improve your work.)

    Our projects are "light" versions of projects from CSCI046 data structures and CSCI143 big data. (Completing these projects gets you a head start in those future classes.)

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: You must complete one of the following "caveat" tasks. The purpose of this task is to give you non-technical exposure to hacker culture. Because the task is non-technical, it will not be graded and will not contribute to the numerical score of your grade. But if you do not complete the task, then you will be docked one letter grade (e.g. an A- becomes a B-).

  1. Watch the following shows/movies about cracking and hacking:

    1. Season 1 of Mr. Robot (available on Amazon Prime). This is the most accurate portrayal of cracking in any movie, see for example this article and this article.

    2. 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).

    3. 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.

    4. Zero Days - Security Leaks for Sale (available for free on youtube) This documentary explores the grey hat world of hackers who develop software to break into computers and sell that software to questionable people... and it's all legal.

  2. 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 2**(i-1) points on every assignment, where i is the number of days late.

Do not expect partial credit for incomplete assignments. It is much better to submit a correct assignment late than an incorrect one on time.

Collaboration Policy:

You are encouraged to discuss all labs and projects with other students, subject to the following constraints:

  1. You must be the person typing in all code for your assignments.
  2. If you ask someone for help: you may show your code to the other person, but you may not view their code.

You may use any online resources you like as references (including LLMs!) without restriction.

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.

Accommodations for Disabilities

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.

About

Computing for the Web

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published