Software Engineering
New York University
Department of Computer Science
Schedule
Intro
| Date | Class | Topics | Notes | Helpful resources | Quiz due | Exercise due |
|---|---|---|---|---|---|---|
| 9/2 | 1 | Welcome | Lecture slides: - Course intro Notes: -Course intro - Syllabus - Discord for Education - Zoom etiquette |
Video tutorials: - How to submit an assignment to GitHub |
||
| 9/7 | n/a | no class (University Holiday) | ||||
| 9/9 | 2 | Software engineering overview | Lecture slides: - Software engineering overview Notes: - Software engineering overview |
- Missed Expectations: Where CS Students Fall Short in the Software Industry - Advice for Computer Science College Students, from Joel on Software - Four Ways to Make CS & IT Curricula More Immersive, by Thomas A. Limoncelli |
- FERPA consent form - Intake questionnaire |
- Join Discord and create your private channel - Create GitHub account - Join Figma |
| 9/14 | 3 | Version control | Lecture slides: - Version control Notes: - Version control - Git & GitHub - The Elements of Technical Writing Style |
Atlassian git workflow comparison | Development processes |
Project 1
Gather requirements, draft a product specification for a mobile application, and build a clickable prototype.
| Date | Class | Topics | Notes | Helpful resources | Quiz due | Exercise due |
|---|---|---|---|---|---|---|
| 9/16 | 4 | - Project 1 kick-off - System specification |
Lecture slides: - Requirements engineering - Domain modeling - UML diagrams Notes: - Requirements engineering - Domain modeling - UML diagrams |
- Google’s Markdown Style Guide - Video course: Requirements Elicitation & Analysis, on LinkedIn Learning |
Git & GitHub | - Git/GitHub configuration - Git workflow practice |
| 9/21 | n/a | no class (Professor out) | ||||
| 9/23 | 5 | User experience design | Lecture slides: -User experience design Notes: - User experience design |
How to Wireframe by Figma Marketing |
Requirements engineering | |
| 9/28 | 6 | Prototyping | Notes: - Figma essentials Examples: - Example prototype |
User experience design | ||
| 9/30 | 7 | Project presentations | Notes: - Guide to presentations |
Project 1 |
Project 2
Build a mobile web application.
| Date | Class | Topics | Notes | Helpful resources | Quiz due | Exercise due |
|---|---|---|---|---|---|---|
| 10/5 | 8 | - Project 2 kick-off - Web architecture |
Notes: - Web architecture - Coding conventions |
Project 1 feedback | ||
| 10/7 | 9 | MongoDB CRUD | Notes: - MongoDB setup - MongoDB CRUD |
Web architecture | ||
| 10/12 | n/a | no class (University Holiday) | ||||
| 10/14 | 10 | Flask & pymongo | Notes: - Virtual environments - Flask & pymongo Examples: - Example web app |
- Video: Setup VSCode for Python - Video: Modify & Run Python in VSCode - Grinberg, Miguel: The Flask Mega-Tutorial |
MongoDB CRUD | |
| 10/19 | 11 | Project work | Notes: - Project work day plan |
Flask & pymongo | Project 2 Sprint 1 Stakeholder demo deadline | |
| 10/21 | n/a | no class (Professor out) | ||||
| 10/26 | 12 | Project presentations | Notes: - Guide to presentations |
Project 2 |
Project 3
Build and test with continuous integration.
| Date | Class | Topics | Notes | Helpful resources | Quiz due | Exercise due |
|---|---|---|---|---|---|---|
| 10/28 | 13 | - Project 3 kick-off - System building |
Notes: - System building Examples: - Example Python package |
-How to Publish an Open Source Python Package to PyPI - Python Packaging User Guide |
Project 2 feedback | |
| 11/2 | 14 | Software testing | Notes: - Software testing - Unit testing |
Effective Python Testing With Pytest | System building | |
| 11/4 | 15 | Continuous integration | Notes: - Continuous integration |
Software testing | ||
| 11/9 | 16 | Project work | Notes: - Project work day plan |
Continuous integration | ||
| 11/11 | 17 | Project presentations | Notes: - Guide to presentations |
Project 3 |
Project 4
Containerized apps composed of multiple internetworked subsystems.
| Date | Class | Topics | Notes | Helpful resources | Quiz due | Exercise due |
|---|---|---|---|---|---|---|
| 11/16 | 18 | - Project 4 kick-off - Virtualization & containers |
Notes: - Virtualization & containers |
- Docker Tutorial for Beginners, by Programming with Mosh - Play with Docker - Access camera and microphone from web browser: this |
Project 3 feedback | -Join Docker Hub (Free plan) - Install Docker Desktop |
| 11/18 | n/a | no class (Professor out) | ||||
| 11/23 | 19 | Container orchestration | - Docker Compose Tutorial, by Programming with Mosh | |||
| 11/25 | 20 | Project work | Notes: - Project work day plan |
Virtualization & containers | ||
| 11/30 | 21 | Project presentations | Notes: - Guide to presentations |
Project 4 |
Project 5
Putting it all together.
| Date | Class | Topics | Notes | Helpful resources | Quiz due | Exercise due |
|---|---|---|---|---|---|---|
| 12/2 | 22 | Project 5 kick-off | Project 4 feedback | |||
| 12/7 | 23 | Deployment | Notes: - Deployment |
Digital Ocean referral link | ||
| 12/9 | 24 | Project work | Notes: - Project work day plan |
|||
| 12/14 | 25 | Release management | Notes: - Release management |
|||
| TBD | 26 | Project presentations | Notes: - Guide to presentations |
- Release management Due after all presentations: - Project 5 feedback - Outtake questionnaire (submit once all presentations are complete) |
Project 5 No late work accepted beyond this date |
Addenda
Material that is not currently included in the course, but may be of interest to some:
| Date | Class | Topics | Notes | Helpful resources | Quiz | Exercise due |
|---|---|---|---|---|---|---|
| n/a | n/a | GitHub for Collaboration | Lecture slides: - GitHub for Collaboration Notes: - GitHub for Collaboration |
GitHub for Collaboration | ||
| n/a | n/a | Team Psychology | Lecture slides: - Team Psychology Notes: - Team Psychology |
Teamwork | ||
| n/a | n/a | Bash scripting | Lecture slides: - Bash scripting Notes: - Bash scripting |
Bash scripting | ||
| n/a | n/a | Design patterns | Lecture slides: - Design patterns Notes: - Design patterns |
Design patterns | ||
| n/a | n/a | Change management | Lecture slides: - Change management Notes: - Change management |