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/20 1 Welcome - Course intro
- Syllabus
- Discord for Education
Video tutorials:
- How to start an assignment from GitHub
- How to submit an assignment to GitHub
   
1/22 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
- Join Figma
1/27 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
1/29 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
2/3 5 User experience design & prototyping - User experience design
- Figma essentials
- Example prototype
How to Wireframe by Figma Marketing
Requirements engineering  
2/5 6 Project work     User experience design  
2/10 7 Project presentations Guide to presentations     Project 1

Project 2

Build a mobile web application.

Date Class Topics Notes Helpful resources Quiz due Exercise due
2/12 8 - Project 2 kick-off
- Web architecture
- Web architecture
- Coding conventions
  Project 1 feedback  
2/17 n/a no class (Legislativer day)        
2/19 9 MongoDB CRUD MongoDB CRUD   Web architecture  
2/24 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  
2/26 11 Project work     Flask & pymongo  
3/3 n/a no class (Professor out)        
3/5 12 Project presentations       Project 2

Project 3

Build and test with continuous integration.

Date Class Topics Notes Helpful resources Quiz due Exercise due
3/10 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/12 14 Software testing - Software testing
- Unit testing
Effective Python Testing With Pytest System building  
3/17 n/a no class (Spring break)        
3/19 n/a no class (Spring break)        
3/24 15 Continuous integration Continuous integration   Software testing  
3/26 16 Project work     Continuous integration  
3/31 17 Project presentations       Project 3

Project 4

Containerized apps composed of multiple internetworked subsystems.

Date Class Topics Notes Helpful resources Quiz due Exercise due
4/2 n/a no class (Professor out)        
4/7 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
Project 3 feedback -Join Docker Hub (Free plan)
- Install Docker Desktop
4/9 19 Container orchestration   - Docker Compose Tutorial, by Programming with Mosh    
4/14 20 Project work     Virtualization & containers  
4/16 21 Project presentations       Project 4

Project 5

Putting it all together.

Date Class Topics Notes Helpful resources Quiz due Exercise due
4/21 22 Project 5 kick-off     Project 4 feedback  
4/23 23 Deployment Deployment Digital Ocean referral link    
4/28 24 Project work        
4/30 25 Release management Release management      
5/5 26 Project 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
TBD (During official exam period) 27 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