Course schedule 2018

Updated January 10, 2018 ]

This is the week-by-week outline for spring 2018. Weekly topics are subject to change. Please check this page once a week for the latest updates. All assigned work is listed here and linked when linking is relevant.

This schedule is subject to change throughout the semester, but assignments and deadlines will mostly stay as they are.

DEADLINES for all quizzes and assignments are in Canvas.

Week 1 – Jan. 9

Introduction to the course. Tools, technologies and outcomes.

Week 2 – Jan. 16

  • Before class: Watch and complete all exercises: SQL basics (9 parts)
  • Download XAMPP before class — follow these instructions to install it and start it (these are the NEW instructions, January 2018)

Introduction to SQL and databases.
Introduction to XAMPP, an Apache Web server that runs on your computer (Mac/Windows).
In-class exercise: A shoutbox using MySQL, JavaScript and PHP (XAMPP required).

  • Quiz 1
  • Complete the shoutbox in-class exercise at home (before next week’s class)

Week 3 – Jan. 23

Optional SQL resources:

  • SQL Tutorial and/or SQL Teaching
  • Note: Don’t use the object-oriented commands, such as $stmt->execute();
    We will use the procedural commands, such as mysqli_stmt_execute($stmt);
  • Explanation of the difference between the SQL object-oriented commands and SQL procedural commands (when you see -> that is NOT the way we are doing it); I added this in case you Google SQL commands and get confused
  • Prepared statements and stored procedures (from the PHP documentation)

In class:

SQL and databases, part 2. Security concerns and SQL.
How to create and use prepared statements in PHP.
jQuery Ajax + HTML forms + PHP.
Review of the shoutbox you have completed. Start Assignment 1.
Preview of Assignment 2.

  • Quiz 2
  • Assignment 1: Complete the shoutbox: Make it live on your own website

Week 4 – Jan. 30

  • Watch and complete exercises: Modifying databases with SQL (7 parts)
    NOTE: This is the fourth section of the Khan Academy course. We are skipping the third section (Relational queries in SQL). Feel free to complete the third section on your own, but I will be discussing the fourth section in class and not the third section.
  • Prepare for Assignment 2: Choose your data, sketch form, list fieldnames

Optional SQL resource:

  • PHP with MySQL Essential Training ( — login here. Like many courses, this is very long (14+ hours) and thorough. You can skip around among these videos to supplement or reinforce what we’ve covered in class. Section 14, “Using PHP to Access MySQL,” is especially good. You can also download the complete exercise files for the course. The only drawback: The instructor is using old XHTML tags that end with />do not copy his outdated HTML tags! (His DOCTYPE is also outdated.) On the plus side, he is using PHP’s newer mysqli_ functions and procedural style (not object-oriented style) — so his PHP matches what we have used in class.

In class:

Using phpMyAdmin to export, import, delete tables, and to test SQL queries.
Using UPDATE and DELETE to modify rows in your database.
Database passwords. Database transactions.
Your MySQL database project explained. Work on Assignment 2.
Assign dates for first round of student presentations.

Week 5 – Feb. 6

  • Read: Command line tips
  • Read chapters 1 and 2 in Automate the Boring Stuff with Python (Sweigart), chapters 1 and 2 — you will recognize concepts from JavaScript, but you’ll see that the Python syntax is different. The book is free online as web pages, but not as a PDF; there’s a link at the site to buy from Amazon.

Install Python (in class); test-drive Terminal (Mac) or PowerShell (Windows).
Introduction to the command line.
Introduction to Python.
Install Jupyter Notebooks.
> Install Python3, virtualenv, Jupyter (in class)
Start Assignment 3 in class.
Student presentations

  • Assignment 3: Python review 1, based on Sweigart (see Canvas for deadline and link)
  • No quiz this week
  • Make sure you have the required book by Mitchell

Week 6 – Feb. 13

Introduction to Web scraping with Python and BeautifulSoup.
Using PIP and virtualenv.
In class, we will install virtualenv and then install Python 3 using a virtual environment. Mitchell discusses virtual environments on pp. 7–8.
Student presentations

Week 7 – Feb. 20

Web scraping, part 2. Introduction to regex. More Python.
Student presentations

  • Assignment 6 has been moved to next week
  • Assignment 7: Python review 3, based on Sweigart (see Canvas for deadline)
  • Quiz 5

Resources used in class, Week 7:

Week 8 – Feb. 27

  • Read: Mitchell, chapters 5 and 6 — these are still “on” for this week
  • Read (or review) Mitchell, chapter 4 and this post
  • Read: How to Break News While You Sleep (about email and bots)
  • Read Sweigart (TK)

Web scraping, part 3.
Introduction to APIs. Storing scraped data.
Web scraping project.

  • Assignment 6: Exercises from Mitchell (see Canvas for deadline)
  • Assignment 8 has been moved to Week 10
  • Web scraping proposal (see Canvas for deadline)
  • Quiz 6
  • Slides: Web Scraping (Mitchell, chapters 4 and 5) — APIs and storing data from scrapes

Week 9 – March 6

Spring Break – no classes

Week 10 – March 13

Starting the next book next week! Make sure you have it: Automate the Boring Stuff with Python (Sweigart) —

Wrap-up for Web scraping: How to write data to a CSV or MySQL database
Web frameworks: Why use a framework?
Installing Flask (hands on): (plus slides)
Assign dates for second round of student presentations.

  • Quiz 7
  • Assignment 8: Python review 4, based on Sweigart (see Canvas for deadline)
  • Slides from class: Flask, Part 1

Week 11 – March 20

  • Read: TK

Web apps with Python: Flask
Flask templates: Introduction
Student presentations

  • Quiz 8
  • Assignment 9: Web scraping project
  • Slides from class: Flask Templates

Week 12 – March 27

Flask and Bootstrap (more about templates)
Flask for Web forms with Flask-WTF and Bootstrap
Student presentations

Week 13 – April 3

  • Read: Frozen-Flask
  • Read: Python Web Server Gateway Interface (WSGI) — naturally, you won’t read all of this, but read enough so that you understand what WSGI is (“Rationale and Goals” and the first part of “Specification Overview” are good)

Flask applications continued
Using Frozen-Flask
Installing a dynamic Flask app at Reclaim Hosting (instructions) — here’s where WSGI comes into play
Student presentations

  • Assignment: Final project proposal
  • Here the GitHub repo for Frozen-Flask: flask-app-for-freezing
  • Here is the walk-through for using Frozen-Flask with your Assignment 10 project

Week 14 – April 10

Student’s individual Web project — workshop hours during class period

Week 15 – April 17

Student’s individual Web project — workshop hours during class period

Week 16 – April 24

Student’s individual Web project — workshop hours during class period

Project Due Date

All projects are due on Monday, April 30, at 11:59 p.m. That is the Monday of finals week. You will post your project on your own website.

  • Post your project’s URL in Canvas by the deadline. This URL is on your own website.