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/6 1 Welcome Course intro Syllabus    
9/11 2 Software engineering overview - Discord for Education
- 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/13 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/18 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/20 5 User experience design & prototyping - User experience design
- Figma essentials
- Example prototype
- How to Wirefrane by Figma Marketing
- Figma essentials
Requirements engineering  
9/25 n/a no class (Yom Kippur)        
9/27 6 Project work     User experience design  
10/2 7 Stakeholder demos       Project 1

Project 2

Build a mobile web application.

Date Class Topics Notes Helpful resources Quiz due Exercise due
10/4 8 - Project 2 kick-off
- Web architecture
Web architecture Video: Web architecture    
10/9 n/a no class (Fall Break)        
10/10 9 MongoDB CRUD MongoDB CRUD Video: MongoDB Web architecture  
10/11 10 Flask & pymongo - Virtual environments
- Flask & pymongo
- Example web app
Grinberg, Miguel: The Flask Mega-Tutorial MongoDB CRUD  
10/16 11 Project work     Flask & pymongo  
10/18 n/a no class (Prof. out)        
10/23 12 Stakeholder demos       Project 2

Project 3

Build and test with continuous integration.

Date Class Topics Notes Helpful resources Quiz due Exercise due
10/25 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/30 14 Software testing - Software testing
- Unit testing
Effective Python Testing With Pytest System building  
11/1 15 Continuous integration Continuous integration   Software testing  
11/6 16 Project work     Continuous integration  
11/8 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/13 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
   
11/15 19 Container orchestration   - Docker Compose Tutorial, by Programming with Mosh    
11/20 20 Project work     Virtualization & containers  
11/22 no class          
11/27 21 Stakeholder demos       Project 4

Project 5

Putting it all together.

Date Class Topics Notes Helpful resources Quiz due Exercise due
11/29 22 Project 5 kick-off        
12/4 23 Deployment Deployment Digital Ocean referral link    
12/6 24 Project work        
12/11 25 Release management Release management      
12/13 26 Project work     Release management  
12/19 @14:00 - 15:50 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 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