knowledge-kitchen / courses / course-notes

Software Engineering

New York University

Department of Computer Science

Schedule

Intro

Date Class Topics Notes Helpful resources Quiz due Exercise due
9/4 1 Welcome - Course intro
- Syllabus
- Discord for Education
     
9/9 2 Software engineering overview 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
Intake questionnaire - Complete consent form
- Join Discord
- Create GitHub account
9/11 3 Version control - Version control
- Git & GitHub
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
- 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/18 5 User experience design & prototyping - User experience design
- Figma essentials
- Example prototype
How to Wireframe by Figma Marketing
Requirements engineering  
9/23 6 Project work     User experience design  
9/25 7 Stakeholder demos       Project 1

Project 2

Build a mobile web application.

Date Class Topics Notes Helpful resources Quiz due Exercise due
9/30 8 - Project 2 kick-off
- Web architecture
Web architecture   Project 1 feedback  
10/2 n/a no class (Prof out)        
10/7 9 MongoDB CRUD MongoDB CRUD   Web architecture  
10/9 10 Flask & pymongo - Virtual environments
- Flask & pymongo
- Example web app
- Video: Setup VSCode for Python
- Video: Modify & Run Python in VSCode
- Grinberg, Miguel: The Flask Mega-Tutorial
MongoDB CRUD  
10/14 n/a no class (Columbus Day / Indigenous Peoples Day)        
10/15 11 Project work     Flask & pymongo  
10/16 12 Stakeholder demos       Project 2

Project 3

Build and test with continuous integration.

Date Class Topics Notes Helpful resources Quiz due Exercise due
10/21 13 - Project 3 kick-off
- System building
- System building
- Example Python package
-How to Publish an Open Source Python Package to PyPI
- Python Packaging User Guide
Project 2 feedback  
10/23 14 Software testing - Software testing
- Unit testing
Effective Python Testing With Pytest System building  
10/28 15 Continuous integration Continuous integration   Software testing  
10/30 16 Project work     Continuous integration  
11/4 17 Stakeholder demos       Project 3

Project 4

Containerized apps composed of multiple internetworked subsystems.

Date Class Topics Notes Helpful resources Quiz due Exercise due
11/6 18 - Project 4 kick-off
- Virtualization & containers
Virtualization & containers - Docker Tutorial for Beginners, by Programming with Mosh
- Play with Docker
- Access camera and microphone from web browser: this
- Access camera from Docker container: this, this and this
- Access microphone from Docker container: this
Project 3 feedback  
11/11 19 Container orchestration   - Docker Compose Tutorial, by Programming with Mosh    
11/13 20 Project work     Virtualization & containers  
11/18 21 Stakeholder demos       Project 4

Project 5

Putting it all together.

Date Class Topics Notes Helpful resources Quiz due Exercise due
11/20 22 Project 5 kick-off     Project 4 feedback  
11/25 23 Deployment Deployment Digital Ocean referral link    
11/27 n/a no class (Prof out)        
12/2 24 Project work        
12/4 25 Release management Release management      
12/9 26 Final project presentations Project presentations   - Release management

Due after presentations:
- Project 5 feedback
-Outtake questionnaire
Project 5
No late work accepted beyond this date
12/16 @4-5:50PM 27 Final project presentations        

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 GitHub for Collaboration   GitHub for Collaboration  
n/a n/a Team Psychology Team Psychology   Teamwork  
n/a n/a Bash scripting Bash scripting   Bash scripting  
n/a n/a Design patterns Design patterns   Design patterns  
n/a n/a Change management Change management