CS 257: Software Design

Fall 2020

Information overload abatement

Help

Samples

Class Notes

Week 0

Things to do right away, on or before the first day of class.

Week 1 (9/14 - 9/20)

What makes software good or bad? Setting up your computer. Version control.

Week 1.5

[TASK] Start learning the vi/vim editor in a terminal. You'll be glad you did.

vi (pronounced VEE-EYE) dates back to 1976, and has been my editor of choice since 1980. Its modern versions are often referred to as "vim" (for "vi improved", pronounced VIM). There are tons of tutorials, including a vim-learning game, a kind of gamelike tutorial, and lots of short introductions.

When you're working in a Unix command-line environment, it doesn't take long for you to find yourself confronted by editing in vi, sometimes by accident, because it's often the default editor used by other programs. Even just knowing how to recognize that you're in vi, and how to save and quit, will help you out of some unexpected situations. Of course, once you get the hang of it, vi is also extremely powerful and extremely convenient.

Week 2 (9/21 - 9/27)

Command-line interface design. Test-driven development.

Week 3 (9/28 - 10/4)

TDD continued. Database design, plus a little SQL and Postgresql.

Week 4 (10/5 - 10/11)

PostgreSQL, SQL, and some database design. Using HTTP-based APIs.

Week 5 (10/12 - 10/18)

Implementing APIs with Flask. Web design.

Week 6 (10/21 - 10/25)

Midterm break. Beginning the web application: picking a dataset and thinking about what your users will want

Week 7 (10/26 - 11/1)

Database design, web usability, mockups.

Week 8 (11/2 - 11/8)

API design, HTML, CSS, and Javascript

Week 9 (11/9 - 11/15)

Working on the web app. System integration and .

Week 10 & finals week (11/16 - 11/23)

Finish the web app. Security, accessibility, usability.