UCSD CSE SPIS: Foundations of Computer Science (FOCS), 2019
Course Information
Lectures
Week 1
- Sun 08/04 — SPIS Orientation Session—
- Mon 08/05 — Introduction, Overview, Unix, vim, Picobot—
- Tue 08/06 — APS: Divide and Conquer, Learning Programming with Python3—
- Wed 08/07 — Python3: Identifiers, Variables, Assignments, Expressions, Scope, If—
- Thu 08/08 — Python3: while and for (each) loops—
- Fri 08/09 — Parameters, for-loops, lists, tuples—
- Breadth —
- Depth —
- Closing Circle —Reflect on awesome moments
Week 2
- Mon 08/12 — Turtle, references, and Begin Recursion—
- Tue 08/13 — APS: Greedy Method—
- Wed 08/14 — More recursion and intro to images—
- Thu 08/15 — APS, references and mutability—
- Fri 08/16 — References and mutability (part 2)—
- Breadth —Overview of Bioinformatics
- Depth —
- Closing Circle —Reflect on awesome moments
Week 3
- Mon 08/19 — Electronics; binary numbers—
- Tue 08/20 — APS: Sorting—
- Wed 08/21 — Intro RPi, Intro to Web Apps—
- Thu 08/22 — Markov Chains, Dictionaries, and Files—
- Fri 08/23 — 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/26 — Clustering and Resume Workshop—
- Tue 08/27 — FSMs, embedded systems—
- Wed 08/28 — Introduction to the Project Areas—Three parallel depth sessions, followed by open house
- Thu 08/29 — APS only—Start of Projects
- Fri 08/30 — 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/06 04:00PM | Sun 08/11 09:00PM |
aps2 | true | APS homework 2 | Tue 08/13 04:00PM | Sun 08/18 09:00PM |
aps3 | true | APS homework 3 | Tue 08/20 04:00PM | Sun 08/25 09:00PM |
aps4 | true | APS homework 4 | Tue 08/27 04:00PM | Tue 09/03 09:00PM |
ev1 | true | Enrichment Video 1 | Sun 08/04 03:00PM | Thu 08/08 09:00AM |
ev2 | true | Enrichment Video 2 | Mon 08/12 03:00PM | Thu 08/15 09:00AM |
ev3 | true | Enrichment Video 3 | Mon 08/19 03:00PM | Thu 08/22 09:00AM |
Labs
num | ready? | description | assigned | due |
---|---|---|---|---|
lab00 | true | The Basics | Mon 08/05 08:30AM | Tue 08/06 05:00PM |
lab01 | true | Picobot | Tue 08/06 08:30AM | Thu 08/08 05:00PM |
lab02 | true | Next steps with GitHub, Python functions, testing | Wed 08/07 01:15PM | Mon 08/12 05:00PM |
lab03 | true | More functions and drawing with Turtle Graphics | Mon 08/12 12:00PM | Thu 08/15 05:00PM |
lab04 | true | Recursion and fractals with Turtle | Tue 08/13 09:00AM | Tue 08/20 05:00PM |
lab05 | true | Image Manipulation | Fri 08/16 09:00AM | Fri 08/23 03:30PM |
lab06 | true | Basics of electronics with Raspberry Pi | Mon 08/19 04:25PM | Tue 08/27 02:45PM |
lab07 | true | Working With Data | Thu 08/22 01:15PM | Wed 08/28 02:45PM |
lab08 | true | Intro to Webapps | Thu 08/22 01:30PM | Wed 08/28 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
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