UCSD CSE SPIS: Foundations of Computer Science (FOCS), 2018
Course Information
Lectures
Week 1
- Sun 08/05 — SPIS Orientation Session—Meet the staff, get your stuff, including first homework assignment.
- Mon 08/06 — First looks—Overview and introduction to CS, SPIS, UNIX, github and lab00
- Tue 08/07 — Picobot —Introduction to Picobot and lab01
- Wed 08/08 — Variables, Data, Functions and Conditionals—Introduction to programming basics in Python
- Thu 08/09 — —
- Fri 08/10 — Turtle, Lists and Loops; and Breadth/Depth—8:45am class, then two options for lecture at 10:15
- Breadth —Compressing information
- Depth —
- Closing Circle —Reflect on awesome moments
Week 2
- Mon 08/13 — Turtle, Lists, Loops, and Begin Recursion—Do more with the Turtle, use lists and loops and start recursion
- Tue 08/14 — —
- Wed 08/15 — Recursion Practice, Begin Pictures—More Practice with Recursion, Start working with Pictures
- Thu 08/16 — Pictures—Basics and working with loops
- Fri 08/17 — FoCS and Breadth/Depth—Mutable references / Two options for lecture
- Breadth: Advanced Recursion, Seam Carving and Dynamic Programming —
- Depth —
- Closing Circle —Reflect on awesome moments
Week 3
- Mon 08/20 — Image processing and binary numbers—HSV color space, image processing filters, bits and number representations
- Tue 08/21 — Introduction to electronics—KCL, KVL, Ohm's law
- Wed 08/22 — Raspberry Pi and Webapps—Introduction to RPi and Webapps
- Thu 08/23 — Markov chains, dictionaries and files—
- Fri 08/24 — Probability and Naive Bayes classification + Breadth/Depth—More info on Lab07 + Two options for lecture
- Breadth —
- Depth —Mutable data, Images, Nested Loops and If-Statements
- Closing Circle —Reflect on awesome moments
Week 4
- Mon 08/27 — More probability, debugging and resume workshop—
- Tue 08/28 — Finite State Machines—Mealy and Moore FSM
- Wed 08/29 — Introduction to the Project Areas—Three parallel depth sessions, followed by open house
- Thu 08/30 — APS only—Start of Projects
- Fri 08/31 — Project Time—work on your final projects
- Closing Circle —Reflect on awesome moments
Week 5
Homework
num | ready? | description | assigned | due |
---|---|---|---|---|
aps1 | true | APS homework 1 | Tue 08/07 09:00AM | Sun 08/12 09:00PM |
aps2 | true | APS homework 2 | Tue 08/14 09:00AM | Sun 08/19 09:00PM |
aps3 | true | APS homework 3 | Tue 08/21 09:00AM | Sun 08/26 09:00PM |
aps4 | true | APS homework 4 | Tue 08/28 09:00AM | Sun 09/02 09:00PM |
ev1 | true | Enrichment Video 1 | Sun 08/05 03:00PM | Thu 08/09 09:00AM |
ev2 | true | Enrichment Video 2 | Mon 08/13 03:00PM | Thu 08/16 09:00AM |
ev3 | true | Enrichment Video 3 | Mon 08/20 03:00PM | Thu 08/23 09:00AM |
Labs
num | ready? | description | assigned | due |
---|---|---|---|---|
lab00 | true | The basics | Mon 08/06 08:30AM | Tue 08/07 05:00PM |
lab01 | true | Picobot | Tue 08/07 08:30AM | Thu 08/09 05:00PM |
lab02 | true | Next steps with github, Python functions, testing | Wed 08/08 01:15PM | Tue 08/14 05:00PM |
lab03 | true | More functions and drawing with Turtle Graphics | Mon 08/13 12:00PM | Thu 08/16 05:00PM |
lab04 | true | Recursion and fractals with Turtle | Tue 08/14 09:00AM | Tue 08/21 05:00PM |
lab05 | true | Image Manipulation | Fri 08/17 09:00AM | Fri 08/24 03:30PM |
lab06 | true | Basics of electronics with Raspberry Pi | Mon 08/20 04:25PM | Tue 08/28 02:45PM |
lab07 | true | Working With Data | Thu 08/23 01:15PM | Wed 08/29 02:45PM |
lab08 | true | Intro to Webapps | Thu 08/23 01:30PM | Wed 08/29 03:45PM |
Topics
- ETS Account Lookup—Looking up your ETS account and resetting your password
- ETS Account: Creating ~/github—Bash shell command intro, and creating your ~/github directory
- ACMS Disk Quota Issues—Disk or file quota exceeded, or what to do when you have weird issues and can't save files
- ACMS Account: github one-time setup steps—ssh-key generation, configure user.name, etc.
- ACMS: ssh'ing into another account—A is logged in, but B needs to get into their account for just a moment...
- ACMS Account Tips—A variety of helpful tips for using your ACMS account
- Data Sources—sources of interesting data to use in your projects
- git: basic workflow—git clone; git status; git add ...; git commit ... ; git push origin master
- git: cloning your first repo—A guide for those new to git
- git: merge conflicts—Not nearly as scary as you may have been told
- git: workflow explained—The details behind git add..., git commit..., git push ...
- Github Resources—Various resources for working with github
- Github: Accept Invitation to an Org—Accepting an invitation to a github organization
- Github: Adding Collaborators—Giving a pair partner or other team member write access to a shared repo
- Github: APS Writeups—Using Github to write solutions to your APS homework
- Github: Confirming email—Creating your account
- Github: Creating a repo—Creating repos in various ways
- Github: Google Drawing images in Markdown files—e.g. for diagrams in your APS Solutions
- Github: Introduction—What is git? What is github?
- Github: Setup—Creating your account
- Learning Strategies—Eight strategies for generative learning (Fiorella and Mayer)
- Linux: Python and git setup —Getting your personal linux environment setup to do Python and git
- MacOS: Python and git setup —Getting your Mac OS laptop setup to do Python and git
- Pair Programming—Collaborating with another person on a solution to a programming problem
- Problems: Fizzbuzz—A sample toy problem
- Python: Requests: User-Agent—The first thing to try when you get 'access denied'
- Python: JSON—Access JSON data in Python
- Python: defaultdict—A special kind of dictionary
- Python: Dictionaries—Mappings from keys to values
- Python: Functions—reusable units of code
- Python: Practice—Various sites for Practicing Coding in Python
- Python: raw_input—reading some input in a terminal session
- Python: Types—int, float, bool, str, list, etc.
- Python: unittest—module for test-driven development in Python
- Windows: Python and git setup —Getting your windows laptop setup to do Python and git
Projects
Robotics
Web Apps
- APIs—Application Programming Interfaces
- Bootstrap Navigation Bar Demo—A quick and dirty way to get a navigation bar
- Anything but Bootstrap Tutorial—Learning front end design from the ground up, and making websites that have personality.
- Databases—Storage that lasts longer than a single session
- Databases: MongoDB—NoSQL database system
- Databases: Implementing MongoDB—Steps to add MongoDB to your WebApp
- Flask—A web application framework written in Python
- Flask: Advanced Topics—If you just can't wait for us to get around to the advanced topics
- Github API—Accessing Github from a webapp (or, any app for that matter)
- Heroku—Using Heroku to host Flask-based Python webapps
- Intro—What are Web Applications all about?
- OAuth—Delegating username/password authentication to Github, Facebook, Google, etc.
- OAuth: Actually doing it—Adding OAuth to an existing Flask Webapp
- OAuth: Deploy—Deploying the OAuth Code on Heroku
- OAuth: Github—Client Credential Setup for Github
- OAuth: Testing Locally—Test without Heroku
- Paper.js—A client-side library for working with the Canvas element
- Sessions—Working with Sessions in Flask
- Webapps Intro, Part 1—Getting Started with Flask
- Webapps Intro, Part 2.5—Better Navigation on your Web App - Nav Bars
- Webapps Intro, Part 2—ftoc (from url), and intro to templates
- Webapps Intro, Part 3—Getting started with Heroku on ETS
- Webapps Intro, Part 4—Deploying an existing Flask App on Heroku
- Webapps Intro, Part 5—Working with Sessions in Flask