UCSD CSE SPIS: Foundations of Computer Science (FOCS), 2017
Lectures
Week 1
- Sun 08/06 — SPIS Orientation Session—Meet the staff, get your stuff, including first homework assignment.
- Mon 08/07 — First looks—Projects, Python, ACMS Unix, git/github. Also, Guttag Ch. 1
- Tue 08/08 — Number representation and Picobot —Binary, hexadecimal, state machines, picobot
- Wed 08/09 — Guttag Chapter 3—Problem solving strategies: Guess and check, exhaustive enumeration, bisection search
- Thu 08/10 — Guttag Chapter 4—functions, scope, stack, modules, recursion, more turtle
- Fri 08/11 — Breadth/Depth—Two options for lecture
- Week 1: Breadth —Steganography
- Week 1: Depth —Guttag Chapters 1-4
- Week 1 Closing Circle —Reflect on Awesome moments, meet the mentors, appreciations
Week 2
- Mon 08/14 — Guttag Chapter 4 and more—More functions and drawing with turtle, unittest, command line tools
- Tue 08/15 — More with turtle graphics—and loops, recursion, functions
- Wed 08/16 — Guttag 2.4, 3.2—Pictures and Loops
- Thu 08/17 — Guttag 5—Structured types and mutability
- Fri 08/18 — Breadth/Depth—Two options for lecture
- Week 2: Breadth —Topic: Huffman Encoding
- Week 2: Depth —Review: PIL, Recursion, Loops
- Week 2 Closing Circle —TBD
Week 3
- Mon 08/21 — Data science / Web App—Data intro
- Tue 08/16 — Electronics—Background for Robotics project
- Wed 08/23 — Data Mining (Paul)—Intro to working with data - Tables
- Wed 08/24 — Data Science (part 2)—Basis statistics (data science part 2)
- Fri 08/25 — Depth lectures—Review of each project area
- Week 3: Data Mining Depth —Get started with Data Science Projects
- Week 3: Robotics Depth —Intro to Robotics
- Week 3: Webapps Depth —TBD
- Week 3 Closing Circle —TBD
Week 4
- Mon 08/22 — Introduction to Machine Learning and Lab 7—
- Tue 08/23 — Calit2 tour and resume writing—
- Wed 08/24 — APS, FSM, and overview of embedded systems and robotics—
- Thu 08/25 — Projects—Start of project phase
- Fri 08/26 — Projects—continue working on the projects
- Week 4: Breadth —Topic TBD
- Week 4: Depth —TBD
- Week 4 Closing Circle —TBD
Week 5 —Projects
- Big Data —Data Mining, Machine Learning, Data Visualization with large data sets
- Sun 09/04 — Big Data, Monday Lectures—Topic TBD
- Tue 08/30 — Big Data, Tuesday Lectures—Topic TBD
- Wed 09/06 — Big Data, Wednesday Lectures—Topic TBD
- Thu 09/07 — Big Data, Thursday Lectures—Topic TBD
- Robotics —Robotics using Raspberry Pi
- Mon 08/29 — Robotics, Monday Lectures—Topic TBD
- Tue 08/30 — Robotics, Tuesday Lectures—Topic TBD
- Wed 08/31 — Robotics, Wednesday Lectures—Topic TBD
- Thu 09/01 — Robotics, Thursday Lectures—Topic TBD
- Web Apps —Web Applications in Python, using Flask
- Mon 09/04 — Web Apps, Monday Lectures—Topic TBD
- Tue 09/05 — Web Apps, Tuesday Lectures—Topic TBD
- Wed 09/06 — Web Apps, Wednesday Lectures—Topic TBD
- Thu 09/07 — Web Apps, Thursday Lectures—Topic TBD
Homework
num | ready? | description | assigned | due |
---|---|---|---|---|
aps1 | true | Divide-and-Conquer | Wed 08/09 11:00AM | Sun 08/13 10:00PM |
aps2 | true | Dynamic-Programming | Wed 08/16 11:00AM | Sun 08/20 10:00PM |
aps3 | true | Greedy-Method-and-Iterative-Improvement | Wed 08/23 11:00AM | Sun 08/27 10:00PM |
h01 | true | Guttag, Chapter 1 | Mon 08/07 08:45AM | Wed 08/09 09:00AM |
h02 | true | Guttag, Chapter 2 | Wed 08/09 10:15AM | Fri 08/11 09:00AM |
reading01 | true | Flipped Classroom: Basic Electronics | Sat 08/19 08:00PM | Tue 08/22 08:45AM |
Labs
num | ready? | description | assigned | due |
---|---|---|---|---|
lab00 | true | The basics | Mon 08/07 08:30AM | Tue 08/08 05:00PM |
lab01 | true | Picobot | Tue 08/08 08:30AM | Thu 08/10 05:00PM |
lab02 | true | Next steps with github, Python functions, testing | Fri 08/11 09:30AM | Tue 08/15 05:00PM |
lab03 | true | More functions and drawing with Turtle Graphics | Mon 08/14 12:00PM | Wed 08/16 03:00PM |
lab04 | true | Recursion and fractals with Turtle | Tue 08/15 09:00AM | Fri 08/18 04:00PM |
lab05 | true | Image Manipulation | Thu 08/17 09:00AM | Mon 08/21 09:00PM |
lab06 | true | Python skill builder (functions, types, if/else, strings, recursion) | Mon 08/21 04:00PM | Fri 08/25 03:45PM |
lab07 | true | Intro to Webapps | Thu 08/24 06:45PM | Tue 08/29 03:45PM |
lab08 | true | Basics of electronics with Raspberry Pi | Tue 08/22 08:45AM | Fri 08/25 03:45PM |
lab09 | true | Working With Data | Tue 08/22 01:15PM | Fri 08/25 04:45PM |
lab10 | true | Functions and Visualization | Sun 08/27 01:15PM | Tue 08/29 04:45PM |
Topics
- ACMS Account Lookup—Looking up your ACMS account and resetting your password
- ACMS 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
The Marvelous Big Data Guide
(Procured by your ever-faithful data tour guide, Maxwell Bland)
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 ACMS
- Webapps Intro, Part 4—Deploying an existing Flask App on Heroku
- Webapps Intro, Part 5—Working with Sessions in Flask