UCSD CSE SPIS: Foundations of Computer Science (FOCS), 2016
Lectures
Week 1
- Sun 07/31 — SPIS Orientation Session—Meet the staff, get your stuff, including first homework assignment.
- Mon 08/01 — First looks—Projects, Python, ACMS Unix, git/github. Also, Guttag Ch. 1
- Tue 08/02 — Picobot and Guttag Chapter 2—Number representation, state machines, numeric types, operators
- Wed 08/03 — Guttag Chapter 3—Problem solving strategies: Guess and check, exhaustive enumeration, bisection search
- Thu 08/04 — Guttag Chapter 4—functions, scope, stack, modules, recursion, more turtle
- Fri 08/05 — Breadth/Depth—Two options for lecture
- Week 1: Breadth —A second look at data mining and intro to list comprehension
- Week 1: Depth —Guttag Chapters 1-4
- Week 1 Closing Circle —Reflect on Awesome moments, meet the mentors, appreciations
Week 2
- Mon 08/08 — Guttag Chapter 4 and more—More functions and drawing with turtle, unittest, command line tools
- Tue 08/09 — More with turtle graphics—and loops, recursion, functions
- Wed 08/10 — Guttag 2.4, 3.2—Pictures and Loops
- Thu 08/11 — Guttag 5.1 and 5.2—Structured types and mutability
- Fri 08/12 — Breadth/Depth—Two options for lecture
- Week 2: Breadth —Topic: PyGame (a package for game programming in Python)
- Week 2: Depth —Review: PIL, Recursion, Loops
- Week 2 Closing Circle —TBD
Week 3
- Mon 08/15 — Webapps (Phill)—Two lectures on webapps (8:45 and 1:15)
- Tue 08/16 — Electronics (Diba)—Background for Robotics project
- Wed 08/17 — Data Mining (Miles)—Intro to working with data
- Thu 08/18 — Hardware and Data Mining, part 2—One more lecture each from Diba and Miles
- Fri 08/19 — Depth lectures—Review of each project area
- Week 3: Data Mining Depth —TBD
- Week 3: Robotics Depth —Live demo of programming with the Pizazz robot
- Week 3: Webapps Depth —TBD
- Week 3 Closing Circle —TBD
Week 4
- Mon 08/22 — Webapps (Phill) at 8:45, Data (Miles) at 1:15—Last lectures on each topic before project selection
- Tue 08/23 — 8:45 Hardware/Robotics (Diba) and 10:15 APS Review (Miles)—TBD
- Wed 08/24 — TBD—TBD
- Thu 08/25 — TBD—TBD
- Fri 08/26 — Breadth/Depth—Two options for lecture
- 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
- Mon 08/29 — Big Data, Monday Lectures—Topic TBD
- Tue 08/30 — Big Data, Tuesday Lectures—Topic TBD
- Wed 08/31 — Big Data, Wednesday Lectures—Topic TBD
- Thu 09/01 — 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 08/29 — Web Apps, Monday Lectures—Topic TBD
- Tue 08/30 — Web Apps, Tuesday Lectures—Topic TBD
- Wed 08/31 — Web Apps, Wednesday Lectures—Topic TBD
- Thu 09/01 — Web Apps, Thursday Lectures—Topic TBD
- Fri 09/02 — Project Demos and SPIS Closing—
Homework
num | ready? | description | assigned | due |
---|---|---|---|---|
aps1 | true | Divide-and-Conquer | Wed 08/03 08:45AM | Sat 08/06 09:00PM |
aps2 | true | Greedy Method | Wed 08/10 08:45AM | Sat 08/13 09:00PM |
aps3 | true | Iterative Improvement | Wed 08/17 08:45AM | Sat 08/20 09:00PM |
aps4 | true | Iterative Improvement | Wed 08/24 08:45AM | Sat 08/27 09:00PM |
h01 | true | Guttag, Chapter 1 | Sun 07/31 03:00PM | Mon 08/01 09:00AM |
h02 | true | Guttag, Chapter 2 | Mon 08/01 09:00AM | Tue 08/02 09:00AM |
h03 | true | Guttag, Chapter 3 | Tue 08/02 09:00AM | Wed 08/03 09:00AM |
h04 | true | Guttag, Sections 4.1, 4.2 4.3 | Wed 08/03 09:00AM | Tue 08/09 09:00AM |
h05 | true | Guttag, Sections 5.1 and 5.2 | Wed 08/10 09:00AM | Fri 08/12 09:00AM |
Labs
num | ready? | description | assigned | due |
---|---|---|---|---|
lab00 | true | lab00 on basics, by Phill | Mon 08/01 09:30AM | Tue 08/02 05:00PM |
lab01 | true | Picobot | Tue 08/02 09:30AM | Wed 08/03 05:00PM |
lab02 | true | Next steps with github, Python functions, testing | Mon 08/08 01:15PM | Mon 08/08 05:00PM |
lab03 | true | More functions and drawing with Turtle Graphics | Tue 08/09 01:15PM | Wed 08/10 03:00PM |
lab04 | true | Recursion and fractals with turtle | Wed 08/10 09:30AM | Fri 08/12 03:45PM |
lab05 | true | Image Manipulation, covering Guttag Ch5 | Thu 08/11 09:30AM | Mon 08/15 05:00PM |
lab06 | true | Python skill builder (functions, types, if/else, strings, recursion) | Mon 08/15 08:45AM | Fri 08/19 03:45PM |
lab07 | true | lab06 with intro to webapps by Phill | Mon 08/15 08:45AM | Mon 08/22 03:45PM |
lab08 | true | Basics of electronics with Raspberry Pi, by Diba | Wed 08/17 09:30AM | Fri 08/19 03:45PM |
lab09 | true | Working With Data, (by Miles and Phill) | Wed 08/17 01:15PM | Mon 08/22 04:45PM |
lab10 | true | Data analysis and plotting | Wed 08/17 01:15PM | Mon 08/22 04:45PM |
lab11 | true | Project Planning | Wed 08/24 10:15AM | Wed 08/24 03:00PM |
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
- 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
- Webapps—A quick and dirty way to get a navigation bar
- 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 Examples—Deploying the OAuth Example Code on localhost, and Heroku
- OAuth: Github—Client Credential Setup for Github
- 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—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