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
1/22 1 Welcome - Course intro
- Syllabus
- Discord for Education
     
1/24 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
1/29 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
1/31 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
2/5 5 User experience design & prototyping - User experience design
- Figma essentials
- Example prototype
- How to Wirefrane by Figma Marketing
- Figma essentials
Requirements engineering  
2/7 6 Project work     User experience design  
2/12 7 Stakeholder demos       Project 1

Project 2

Build a mobile web application.

Date Class Topics Notes Helpful resources Quiz due Exercise due
2/14 8 - Project 2 kick-off
- Web architecture
Web architecture Video: Web architecture Project 1 feedback  
2/21 9 MongoDB CRUD MongoDB CRUD Video: MongoDB Web architecture  
2/26 10 Flask & pymongo - Virtual environments
- Flask & pymongo
- Example web app
Grinberg, Miguel: The Flask Mega-Tutorial MongoDB CRUD  
2/28 11 Project work     Flask & pymongo  
3/4 12 Stakeholder demos       Project 2

Project 3

Build and test with continuous integration.

Date Class Topics Notes Helpful resources Quiz due Exercise due
3/6 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  
3/11 14 Software testing - Software testing
- Unit testing
Effective Python Testing With Pytest System building  
3/13 15 Continuous integration Continuous integration   Software testing  
3/25 16 Project work     Continuous integration  
3/27 17 Stakeholder demos       Project 3

Project 4

Containerized apps composed of multiple internetworked subsystems.

Date Class Topics Notes Helpful resources Quiz due Exercise due
4/1 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  
4/3 19 Container orchestration   - Docker Compose Tutorial, by Programming with Mosh    
4/8 20 Project work     Virtualization & containers  
4/10 21 Stakeholder demos       Project 4

Project 5

Putting it all together.

Date Class Topics Notes Helpful resources Quiz due Exercise due
4/15 22 Project 5 kick-off     Project 4 feedback  
4/17 23 Deployment Deployment Digital Ocean referral link    
4/22 n/a no class (Prof out)        
4/24 24 Project work        
4/29 25 Release management Release management      
5/1 26 Final project presentations Project presentations   - Release management
- Project 5 feedback
-Outtake questionnaire
Project 5
No late work accepted beyond this date
5/6 n/a 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