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
- Zoom etiquette
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
- FERPA consent form
- Intake questionnaire
- Join Discord and create your private channel
- Create GitHub account
- Join Figma
1/27 3 Version control - Version control
- Git & GitHub
- The Elements of Technical Writing Style
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 Project work day plan   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 (Legislative day)        
2/19 9 MongoDB CRUD - MongoDB setup
- 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 Project work day plan   Flask & pymongo Project 2 Sprint 1 Stakeholder demo deadline
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 Project work day plan   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 Project work day plan   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 Project work day plan      
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
5/7 2-3:50PM 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