Code Monkey home page Code Monkey logo

cmc-csci040's Introduction

CSCI040: Computing for the Web Introduction to Hacking

Important links:

  1. What Hackers get Payed

  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 #85
Zoom Link https://cmc-its.zoom.us/j/644800111
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)
  5. currently on paternity leave

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, expect that you will 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 CS5 at Harvey Mudd or CS51 at Pomona.

    1. If you have already taken either of those courses, then you cannot take this course.

    2. If you are majoring in computer science at either of those schools, 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 than the Mudd/Pomona courses.

      This course is especially designed to connect computer science to non-STEM subjects like

      1. economics,
      2. government,
      3. literature, and
      4. history.
  4. This course cannot be taken CR/NC.

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. Jinja
    5. SQL
    6. Markdown
    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. disabilities (~8% of males are red-green colorblind)
      2. non-English / non-American users of software
    4. web security
      1. technical details (you will learn to commit fraud in this class!)
      2. social implications
      3. governmen policy
      4. legal issues
  3. Use real-world programming tools

    1. Python libraries actually in use at FAANG companies
    2. GitHub

Textbook:

All of our textbooks are free as in beer. Some of them are free as in speech.

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

Hackers believe in the free exchange of information and often use the following websites to share textbooks and other knowledge:

  1. https://b-ok.org
  2. https://sci-hub.tw
  3. https://thepiratebay.org

But most of the people who use these sites are script kiddies.

Grades:

category points/assignment approximate percentage
labs (weekly) 5pts 20%
quizzes (weekly) 10-20pts 40%
projects (every 2-3 weeks) 10-40pts 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.
    2. Weekly labs are automatically graded by Python. Keep working on them until you get 100%.
    3. 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.
  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.
    3. Historically, the average student needs to spend about 10 hours per week outside of class to get an A. About 50% of students will either: spend 15-20 hours per week and get an A-/A, or spend 10 hours per week and get a B/C.
  3. The projects are designed to be fun, real-world projects:

    Project Due Date will be no earlier than
    0 Building a Webpage Sunday, 12 Sep
    1 Markdown compiler Sunday, 03 Oct
    2 Data visualization Sunday, 10 Oct
    3 Scraping ebay Sunday, 24 Oct
    4 Reddit propaganda bot Sunday, 07 Nov
    5 Twitter clone Sunday, 12 Dec

    There's also fewer projects than in CS5/CS51. Those courses have 1 project per week.

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.

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

  2. Watch the following shows/movies about hacking:

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

    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)

See Issue #79 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 early.

If you have extenuating circumstances, contact me in advance of the due date and I may extend the due date for you.

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:

  1. you must be the person typing in all code for your assignments, and
  2. you must not copy another student's code.

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.

COVID-19 Policy:

I want to respect everyone's various comfort levels with COVID exposure. Therefore:

  1. you will be encouraged to work closely with other students in this class,
  2. but you will not be required to work too closely (for example by sharing computers).

If you are quarantined and cannot come to class:

  1. you are excused from the quizzes you miss and won't have to retake them;

  2. you are still responsible for turning in labs/projects on time;

    1. unless you are also ill, then I will grant an appropriate extension

Schedule

Week Date Topic
0 Mon, 30 Aug Course intro
0 Wed, 01 Sep Web 1.0: HTML
0 Fri, 03 Sep Lab: GitHub
1 Mon, 06 Sep NOCLASS: Labor Day
1 Wed, 08 Sep Web 1.0: CSS
1 Fri, 10 Sep Lab: Removing web ads
2 Mon, 13 Sep Python: control flow
2 Wed, 15 Sep Python: control flow
2 Fri, 17 Sep Lab: SMS/Twilio
3 Mon, 20 Sep Python: lists
3 Wed, 22 Sep Python: dictionaries
3 Fri, 24 Sep Lab: basic algorithms/data structures
4 Mon, 27 Sep Python: strings
4 Wed, 29 Sep Python: files
4 Fri, 01 Oct Lab: markdown to html converter
5 Mon, 04 Oct Python: JSON
5 Wed, 06 Oct Python: matplotlib
5 Fri, 08 Oct Lab: Analyzing Trump's tweets
6 Mon, 11 Oct Python: reddit
6 Wed, 13 Oct Python: reddit
6 Fri, 15 Oct Lab: Generating propaganda
7 Mon, 18 Oct NOCLASS: fall break
7 Wed, 20 Oct Python: reddit
7 Fri, 22 Oct Lab: RedditBots
8 Mon, 25 Oct Python: web scraping
8 Wed, 27 Oct Python: web scraping
8 Fri, 29 Oct Lab: Requests
9 Mon, 01 Nov Python: multilingual support (Unicode)
9 Wed, 03 Nov Python: multilingual support (Unicode)
9 Fri, 05 Nov Lab: machine translation
10 Mon, 08 Nov Web 2.0: SQL
10 Wed, 10 Nov Web 2.0: SQL
10 Fri, 12 Nov Lab: SQL
11 Mon, 15 Nov Web 2.0: Flask
11 Wed, 17 Nov Web 2.0: Flask
11 Fri, 19 Nov Lab: Dynamic webpages
12 Mon, 22 Nov Web 2.0: Flask
12 Wed, 24 Nov NOCLASS: Thanksgiving
12 Fri, 26 Nov NOCLASS: Thanksgiving
13 Mon, 29 Nov Web 2.0: Flask
13 Wed, 01 Dec Web 2.0: Flask
13 Fri, 03 Dec Lab: AJAX
14 Mon, 06 Dec Web 2.0: Flask
14 Wed, 08 Dec Web 2.0: Flask
14 Fri, 10 Dec Lab: Final project

No Final Exam. Final project will be due during exam week.

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.

cmc-csci040's People

Contributors

mikeizbicki avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.