nyu-software-engineering / course-materials

Software Engineering

New York University

Department of Computer Science

Schedule

Intro

Date Class Topics Notes Helpful resources Quiz due Exercise due
9/5 n/a no class        
9/7 1 Welcome Course intro Syllabus    
9/12 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
  - Complete consent form
- Join Discord
- Create GitHub account
9/14 3 Version control - Version control
- Git & GitHub
- Video: Version control
- 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/19 4 - Project 1 kick-off
- System specification
- Requirements engineering
- Domain modeling
- UML diagrams
Video course: Requirements Elicitation & Analysis, on LinkedIn Learning Git & GitHub Git workflow practice
9/21 5 User experience design & prototyping User experience design - How to Wirefrane by Figma Marketing
- Guide to Prototyping in Figma
Requirements engineering  
9/26 n/a no class        
9/28 6 Project work     User experience design  
10/3 7 Stakeholder demos       Project 1

Project 2

Build a mobile web application.

Date Class Topics Notes Helpful resources Quiz due Exercise due
10/5 n/a no class        
10/10 n/a no class        
10/11 8 - Project 2 kick-off
- Web architecture
- Web architecture
- Web app example
Video: Web architecture    
10/12 9 MongoDB CRUD MongoDB CRUD Video: MongoDB Web architecture  
10/17 10 Flask & pymongo Flask & pymongo Example app
Grinberg, Miguel: The Flask Mega-Tutorial
MongoDB CRUD  
10/19 11 Project work     Flask & pymongo  
10/24 12 Stakeholder demos       Project 2

Project 3

Build and test with continuous integration.

Date Class Topics Notes Helpful resources Quiz due Exercise due
10/26 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
   
10/31 14 Software testing - Software testing
- Unit testing
Effective Python Testing With Pytest System building  
11/2 15 Continuous integration Continuous integration   Software testing  
11/7 16 Project work     Continuous integration  
11/9 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/14 18 - Project 4 kick-off
- Virtualization & containers
Virtualization & containers - Docker Tutorial for Beginners, by Programming with Mosh
- Play with Docker
- Access camera from Docker container: this, this and this
- Access microphone from Docker container: this
   
11/16 19 Container orchestration   - Docker Compose Tutorial, by Programming with Mosh    
11/21 20 Project work     Virtualization & containers  
11/23 no class          
11/28 21 Stakeholder demos       Project 4

Project 5

Putting it all together.

Date Class Topics Notes Helpful resources Quiz due Exercise due
11/30 22 Project 5 kick-off        
12/5 23 Deployment Deployment Digital Ocean referral link    
12/7 24 Project work        
12/12 25 Release management Release management      
12/14 26 Project work     Release management  
12/19 @2-3:50PM 27 Final project presentations Project presentations     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 due Exercise due
n/a n/a 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