Class Schedule
Week 1
Tuesday 14 January
- Intro to Course
- Intro to DB
Thursday 16 January
- lab 1: Nitrous.io (my very sketchy notes)
- Team worksheet
- introduction to Python and Flask
- git clone https://github.com/zacharski/templateIntro.git
week 02
Chapters 1 & 2
Tuesday 21 January
- SNOW DAY – arghhh.
Thursday 23 January
- RAT 1: Chapter 1: one 3×5 card of notes
- continue work on Nitrous worksheet.
- interested in web design? check out smashingmagazine.com
- HOMEWORK for next class:
- finish Nitrous/Flask project
- read chapter 2
week 03
Chapter 3
Tuesday 28 January
- Reminder: Please read a chapter a week.
- Nitrous/Flask Worksheet demo. Individual task demo (due date is today in class) 15 minutes
- worksheet – simple queries on the world2.sql database
Thursday 30 January
- a few words on installing mysql locally
- finish worksheet (10 minutes)
- Intro to Python & Flask: Using Forms (pdf of slides)
- git clone https://github.com/zacharski/alienAbductions.git
- Python and MySQL in 15 slides or so
- Team Task -finish alien abduction site.
- HOMEWORK:
- finish Alien Abduction Site
- prepare for second RAT (chapters 2 & 3)
week 04
chapter 4
Tuesday 4 February
- RAT 2: chapters 2 & 3: 1 3×5 card of notes (test is picky about syntax)
- SUPREME IMPORTANCE
- mySQL working on laptop
- flask running reliably somewhere (nitrous, vagrant or sth. else)
- finish alien abduction task
Thursday 6 February
- Lightning Round
- tomatoes.sql & world.sql (note: these sql files only contain the tables – you should first create a database)
- Using MySQL in Flask: an introduction in 15 slides
- Last 30 minutes
- finish blog and demo.
week 05
chapter 5 & start of project
Tuesday 11 February
- Getting started with the project:
- Introduction to Scrum (slides).
- Discussion of project
- Requirements of First Sprint
- Using MySQL in Flask: an introduction in 15 slides
Thursday 13 February
- Snow Day – no class
week 06
chapter 6
Tuesday 18 February
- brainstorm (10 min)
- self-organize into teams (2-4 people per team)
- Project design meeting ~ 20 minutes
- Sprint email due Wednesday 11:59pm
Thursday 20 February
week 07
chapter 7
Tuesday 25 February
- Scrum meeting (5 min)
- Sessions and dangerous characters (15 min) (slides)
- git clone https://github.com/zacharski/flaskSession.git
- sessions assignment due 13 March for max xp. Tasks:
- implement sessions so when a person is logged in searches are restricted by zip code and username appears in menu bar.
- implement logout.
- implement handling of dangerous characters so, for ex., when a person types in Peet’s the search succeeds.
- implement a new user registration page that stores passwords as hashes. Change all code to use these hashed passwords.
- Alien MySQL demo.
- Scrum lab time
Thursday 27 February
- Lightning Round
- umw.sql
- world.sql (you probably already have this)
- tomatoes2.sql
week 08
chapter 8
Spring Break
Tuesday 4 March
Thursday 6 March
week 09
chapter 9
Tuesday 11 March
- Sprint 1 Demo
- Sprint Design Meeting:
- all tables in 3NF
- some queries involve multiple tables
- Damien Katz video
- Exploits, hacking, and protecting your site.
Thursday 13 March
- RAT 4 (chapters 7-9)
- sessions & dangerous character demo
week 10
chapter 10
Tuesday 18 March
- Sessions lab & demo
- SQL Injection (quick 12 minute intro)
- Database design – team worksheet
Thursday 20 March
- Lightning Round
week 11
chapter 11
Tuesday 25 March
- Sprint 2 Demo
- Final Sprint Requirements
- index one other column other than primary and foreign keys (there should be a reason to do so)
- implement one other sql feature (for ex., subqueries)
- Database Design Team Worksheet
Thursday 27 March
- FINAL RAT: RAT #5: chapters 9 – 11; temporary tables p534 #5; indexes p539; unlimited self-produced notes.
COMPLETION OF SQL PORTION OF COURSE
week 12
Tuesday 1 April
- Final Exam part 1 posted
- imdb_small.sql
Thursday 3 April
- Final Sprint Demo
- Sprint project peer review
- Hilarity with Node.js
- we will watch the start of a great video on Node.js by Ryan Dahl, the creator of Node.js.
- Ryan Dahl with a 30 min. hands on tutorial on node.js — “Hilarity ensues”
- Great node info at How to Node.
week 13
Tuesday 8 April
- Homework: watch the 2 node videos above.
- Introduction to noSQL (pdf of slides)
- Intro to MongoDB (pdf of slides)
- short code examples for php and node
- Python Flask example
- git repository: https://github.com/zacharski/flaskMongoLojong (see readme for tasks)
- Please listen to the FLOSS Weekly podcast on MongoDB. The talk on MongoDB starts about 12 minutes into the podcast
- Optional Mongo RAT – please submit answers via gmail to submit.o.bot
- No SQL project requirements
- This assignment is optional. You can earn between 75 and 200XP. For amazing work you can earn 350 or even 500 XP
- I will give a demo of a very simple mongoDB/Python application in class (Lojong). Projects of this complexity will earn 75XP (assuming 2 person teams). To earn more XP you can use a new technology, add to the complexity of the site, or both
- I have a personal interest in using mongoDB with node.js (instead of PHP). There are a number of good mongoDB/node.js tutorials on the web (for ex., Getting Started with MongoDB and Node.js and Blog Rolling with mongoDB, express, and Node.js). A good, basic mongoDB/node.js site would be worth 150XP (again, assuming two person teams). The blog rolling tutorial looks fairly complex and something along those lines would be worth at least 200XP
- You can use a different noSQL server. Using CouchDB will add at least 25XP, and a different noSQL server will add at least 50XP.
- You can combine new technology and add complexity. For example, a complete Lojong Mind Training Site using MongoDB and node.js would be worth at least 250XP.
- Time assumptions. I am assuming that one person can implement the simple site I demoed in an evening’s worth of work. A 3 person team should be able to implement a complete Lojong site in 3 hrs. This is the level of work I am looking for. I assume more output for larger teams
- You will be giving an extended demo of your project 24 April
Thursday 10 April
- Map Reduce
- SQL file containing cities info.
- Mongo file containing cities info. (mongorestore)
- mongo map reduce example
(mongo localhost:27017/geoworld mapReduce.js) - zipcode mongo json For example,
mongoimport –db scratch –collection zips –file zips.json - More examples of Map Reduce in Mongo in the Cookbook
- The scoop on Map Reduce
- Cluster Computing and Map Reduce
- Lab time for teams working on noSQL project (persons not working on a noSQL project can leave 1/2 hr early.
week 14
Tuesday 15 April
- FINAL EXAM!!!! -> Final Version of Final Exam
- Would you rather work on cool stuff or have a secure big-bucks job? Damien Katz: CouchDB and Me
- MongoLab (fix Lojong Site) 50xp
- MapReduce Lab
- geoWorld: Find the closest cities in each country (15xp)
- geoWorld: Find the farthest cities in each country (25xp)
- using the zip database, find closest cities in each state. (25xp)
- For each state, the zipcode with the smallest population (but larger than 0). (zip db) (25xp)
- For each city the population of that city. (zip db) (25xp)
Thursday 17 April
- Intro to Redis
- Lab Time
- Hadoop/noSQL parody video
week 15
Tuesday 22 April
- Intro to Couch
- CouchOne video
- Map Reduce Continued
- Google Technology Roundtable: Map Reduce
- Thanks
Thursday 24 April
- noSQL demo day. Failure to attend WILL result in a significant deduction of XP.