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/2 1 Welcome Lecture slides:
- Course intro

Notes:
-Course intro
- Syllabus
- Discord for Education
- Zoom etiquette
Video tutorials:
- How to submit an assignment to GitHub
   
9/7 n/a no class (University Holiday)        
9/9 2 Software engineering overview Lecture slides:
- Software engineering overview

Notes:
- 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
9/14 3 Version control Lecture slides:
- Version control

Notes:
- 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
9/16 4 - Project 1 kick-off
- System specification
Lecture slides:
- Requirements engineering
- Domain modeling
- UML diagrams

Notes:
- 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
9/21 n/a no class (Professor out)        
9/23 5 User experience design Lecture slides:
-User experience design

Notes:
- User experience design
How to Wireframe by Figma Marketing
Requirements engineering  
9/28 6 Prototyping Notes:
- Figma essentials

Examples:
- Example prototype
  User experience design  
9/30 7 Project presentations Notes:
- Guide to presentations
    Project 1

Project 2

Build a mobile web application.

Date Class Topics Notes Helpful resources Quiz due Exercise due
10/5 8 - Project 2 kick-off
- Web architecture
Notes:
- Web architecture
- Coding conventions
  Project 1 feedback  
10/7 9 MongoDB CRUD Notes:
- MongoDB setup
- MongoDB CRUD
  Web architecture  
10/12 n/a no class (University Holiday)        
10/14 10 Flask & pymongo Notes:
- Virtual environments
- Flask & pymongo

Examples:
- Example web app
- Video: Setup VSCode for Python
- Video: Modify & Run Python in VSCode
- Grinberg, Miguel: The Flask Mega-Tutorial
MongoDB CRUD  
10/19 11 Project work Notes:
- Project work day plan
  Flask & pymongo Project 2 Sprint 1 Stakeholder demo deadline
10/21 n/a no class (Professor out)        
10/26 12 Project presentations Notes:
- Guide to presentations
    Project 2

Project 3

Build and test with continuous integration.

Date Class Topics Notes Helpful resources Quiz due Exercise due
10/28 13 - Project 3 kick-off
- System building
Notes:
- System building

Examples:
- Example Python package
-How to Publish an Open Source Python Package to PyPI
- Python Packaging User Guide
Project 2 feedback  
11/2 14 Software testing Notes:
- Software testing
- Unit testing
Effective Python Testing With Pytest System building  
11/4 15 Continuous integration Notes:
- Continuous integration
  Software testing  
11/9 16 Project work Notes:
- Project work day plan
  Continuous integration  
11/11 17 Project presentations Notes:
- Guide to presentations
    Project 3

Project 4

Containerized apps composed of multiple internetworked subsystems.

Date Class Topics Notes Helpful resources Quiz due Exercise due
11/16 18 - Project 4 kick-off
- Virtualization & containers
Notes:
- 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
11/18 n/a no class (Professor out)        
11/23 19 Container orchestration   - Docker Compose Tutorial, by Programming with Mosh    
11/25 20 Project work Notes:
- Project work day plan
  Virtualization & containers  
11/30 21 Project presentations Notes:
- Guide to presentations
    Project 4

Project 5

Putting it all together.

Date Class Topics Notes Helpful resources Quiz due Exercise due
12/2 22 Project 5 kick-off     Project 4 feedback  
12/7 23 Deployment Notes:
- Deployment
Digital Ocean referral link    
12/9 24 Project work Notes:
- Project work day plan
     
12/14 25 Release management Notes:
- Release management
     
TBD 26 Project presentations Notes:
- Guide to 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

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 Lecture slides:
- GitHub for Collaboration

Notes:
- GitHub for Collaboration
  GitHub for Collaboration  
n/a n/a Team Psychology Lecture slides:
- Team Psychology

Notes:
- Team Psychology
  Teamwork  
n/a n/a Bash scripting Lecture slides:
- Bash scripting

Notes:
- Bash scripting
  Bash scripting  
n/a n/a Design patterns Lecture slides:
- Design patterns

Notes:
- Design patterns
  Design patterns  
n/a n/a Change management Lecture slides:
- Change management

Notes:
- Change management