CS 1.1: Intro to Programming

Course Description

This course covers the fundamentals of programming including variables, data types, control flow, conditionals, loops, lists, dictionaries, functions, and object-oriented programming. Students will master top-level concepts in software development including writing pseudocode, using functions to process input into output, technical project planning, and diagramming. The course will also cover how computers work, from components and layout to memory and machine code instructions.

Why you should know this

This course is designed to equip students with the technical skills and foundational knowledge necessary to succeed at Make School. A strong foundation in CS concepts is the foundation for learning in any other course.

Prerequisites

  • Make School Prework or Ramp Program

Learning Objectives

Students by the end of the course will be able to ...

  1. Explain how to break down a problem into a programable algorithm.
  2. Translate user stories and requirements into a program.
  3. Practice core programming concepts including data structures, control flow, repetition, functions, and object oriented programming.
  4. Implement core programming concepts in Python.
  5. Implement programming best practices, debugging, and testing in Python.

Schedule

Course Dates: Monday, August 26 – Thursday, October 10, 2019 (7 weeks)

Class Times for Sections A and B:

  • Monday, Wednesday 1:30–3:20pm
  • Tuesday, Thursday, 9:30–11:20am
  • Lab Time: Tuesday, 3:30–5:00pm
  • Lab Time: Thursday, 1:30–3:00pm

Class Times for Sections C and D:

  • Monday, Wednesday 3:30–5:20pm
  • Tuesday, Thursday, 1:30–3:20pm
  • Lab Time: Tuesday, 9:30–11:00am
  • Lab Time: Thursday, 3:30–5:00pm
Class Date Topics
1 Wed, Aug 28 Variables, Functions & Program Design
2 Thu, Aug 29 Control Flow & Lists
3 Tue, Sep 3 Pseudocode & Flowchart Diagrams
4 Mon, Sep 9 Problem Solving Strategy
5 Tue, Sep 10 Code Quality, Reuse & Error Handling
6 Wed, Sep 11 Debugging & Testing
7 Tue, Sep 17 OOP Part 1: Encapsulation
8 Mon, Sep 23 OOP Part 2: Inheritance
9 Tue, Sep 24 OOP Part 3: Polymorphism
10 Thu, Sep 26 Herd Immunity Simulation
11 Thu, Oct 3 Computer Components & Organization
12 Mon, Oct 7 Herd Immunity Simulation Lab
13 Tue, Oct 8 CPU Instructions & Memory

Tutorials & Projects

Tutorials

Students will complete the following guided tutorials, which are intended to help you get started on new topics. They are graded on completion only.

Projects

Students will complete the following self-guided projects, which are meant to be more challenging than tutorials to test your understanding of concepts.

The first two projects require a minimum of 5 commits, while the last project requires a minimum of 10 commits. Commits must take place throughout the period of time from when they are assigned to when they are due.

  • Good Example: 40+ commits throughout the length of the course, looking for a healthy spattering of commits each week (such as 3-5 per day).
  • Bad Example: 10 commits on one day during the course and no others. Students who do this will be at severe risk of not passing the class.
  • Unacceptable Example: 2 commits the day before a project is due. Students who do this should not expect to pass the class.

Why are we doing this?

We want to encourage best practices that you will see working as a professional software engineer. Breaking up a project by doing a large amount of commits helps engineers in the following ways:

  • It's much easier to retrace your steps if you break your project/product/code up into smaller pieces
  • It helps with being able to comprehend the larger problem, and also will help with your debugging (i.e. finding exactly when you pushed that piece of broken code)
  • It allows for more streamlined, iterative communication in your team, as it's much easier to hand off a small change to someone (updating a function) than a huge one (changed the architecture of the project)

Through this requirement, we hope to encourage you to think about projects with an iterative, modular mindset. Doing so will allow you to break projects down into smaller milestones that come together to make your fully-realized solution.

Evaluation Criteria

To pass this course, students must meet the following requirements:

  • Complete all required coding tutorials:

    • Captain Rainbow’s Color Checklist
    • Superhero Team Dueler
  • Complete all required coding projects (this includes all commit requirements and homework related to each project):

    • Mad Libs
    • Spaceman
    • Herd Immunity
  • All tutorials and project rubrics can be found here

  • Submit all code and writing with rubric scores by the due dates listed above

  • Pass all submissions according to the associated coding challenge rubrics

  • Pass all weekly quizzes (there will be a total of 5 quizzes, lowest quiz will be dropped)

  • Actively participate in class and abide by the attendance policy

  • Make up all classwork from all absences

Evaluation Criteria Explained

  • To pass each project or tutorial, students must earn the required number of points or higher indicated on the associated rubric. Note that all points within one project or tutorial submission are fungible (that is, interchangeable) and so if one portion of work is below the "Met All Expectations" column of the rubric, another portion of work submitted can "Exceed Expectations" (generally by completing stretch challenges) to earn an extra point to make up for the missing one. Therefore, it's wise to complete stretch challenges as "insurance" in case some work does not meet expectations. Coming to office hours is another way to earn flexibility points.

  • Another way to think of the submissions is a game where your goal is to earn enough points to pass in whatever way you see fit, with rubrics as the rules of the game that you can optimize against and "win" to pass the course.

  • The instructor or teaching assistants will review students' submissions and verify or correct their self-assessed scores, then share feedback with the student through a GitHub issue opened on their repository. Feedback will include their status on that submission (that is, whether their work is passing the rubric). Resubmissions will not be considered unless the instructor has approved a resubmission in writing due to exceptional circumstances.

  • Submissions received after the due date will not be considered unless the instructor has approved an extension in writing due to exceptional circumstances.

Resources

Attendance

Just like any job, attendance at Make School is required and a key component of your success. Attendance is being onsite from 9:30 to 5:30 each day, attending all scheduled sessions including classes, huddles, coaching and school meetings, and working in the study labs when not in a scheduled session. Working onsite allows you to learn with your peers, have access to support from TAs, instructors and others, and is vital to your learning.

Attendance requirements for scheduled sessions are:

  • No more than two no call no shows per term in any scheduled session.
  • No more than four excused absences per term in any scheduled session.

Failure to meet these requirements will result in a PIP (Participation Improvement Plan). Failure to improve after the PIP is cause for not being allowed to continue at Make School.

Make School Course Policies