Agile Software Engineering Course Syllabus

From Knowledge Kitchen
Jump to navigation Jump to search

Course Description

Agile software development has come to describe a specific approach and toolset that allow for the requirements of a software project to change as a project progresses without disrupting schedules, budgets, and responsibilities. The field of DevOps, a portmanteau of development and operations has introduced further processes and infrastructure to automate many of the tasks required in such development. Together, Agile's methodology and DevOps' automation have increased the speed, robustness, and scalability with which software is developed today. Upon completion of this course, students will understand the core methodologies, technologies, and tools used for software engineering.


Tentative Topics

We will try to weave as many of the following into the course as possible, although we will surely not be able to cover all:

Tools and techniques of the trade

  • Version control
  • Code collaboration
  • Continuous integration / deployment
  • Configuration management
  • Automated testing
  • Change management
  • Project planning and management


  • Personality types
  • Team formation
  • Roles and responsibilities
  • Task estimation and assignment
  • Conflict resolution
  • Team communication
    • Code level
    • Documentation
    • Demos and presentations
    • Collaboration tools such as Git, GitHub, Slack, MS Teams, Discord, Kanban boards

Software development phases

  • Specification
  • Development
  • Validation
  • Evolution


"In almost all cases, I’m opposed to setting aside time for refactoring."
-Martin Fowler


"Premature optimization is the root of all evil."
-Donald Knuth

Project methodologies

  • Big Design Up-Front (BDUF)
  • Iterative
    • Agile
      • Scrum

Design and modeling

  • UML
  • Software architecture
  • Design patterns

User-centered design

  • Service Design
  • Applied human-computer interaction



  • Concurrency
  • Asynchronicity

Data and databases

  • SQL
  • MongoDB
  • Other No-SQL
  • Hadoop

Cloud services

  • AWS
  • Azure

Programming languages and frameworks

Javascript stack

Programming will be primarily done in Javascript with MongoDB, Express.js, React.js, and Node.js - the so-called MERN stack.

  • Some instruction will be given on the more unusual features of the Javascript language
  • Students are expected to be able to pick up Javascript and any other necessary programming environments on their own
  • If you are uncomfortable or lack the time to teach yourself a new language or technology, then this course may not be for you.

Helpful resources




MongoDb and Mongoose



We use Discord as our main communication channel for announcements and discussion.

Each student must create a private channel in Discord.

  • Name the channel 'assgn_fb1258', where 'fb1258' is replaced with your own NYU Net ID.
  • Invite the graders to join your channel. The usernames of the graders in Discord will contain the word 'Grader' in them.

Getting help

Help resources available to you are listed in order of “seriousness” of your problem:


Students are expected to consult the Student FAQ prior to asking questions of the tutors, professor, or other students. This allows us to focus our time on questions of greater significance.


Our tutors will be available in a combination of in-person and online sessions.

If you have question for the tutor at other times, post something to the #tutoring communication channel, and someone will respond as soon as they can.

Talk with the professor

  1. talk before class
  2. raise your hand during class
  3. talk after class
  4. come to open office hours


  • Quizzes - 35%
  • Individual exercises - 15%
  • Team project - 50%

Submitting exercises

Submit exercises by sending them as messages to the Discord private channel you have created.

  • Include a polite message with your name and the name of the exercise
  • most assignments consist of GitHub repositories - for these, be sure to push your work to the repository and include the link to your repository in your message.
  • if you have been asked to submit files, include all files as a single zip file... If you are not familiar with naming files and creating zip files, see the tutors.
  • unless you have good reason to do otherwise, follow best-practices for all basic file names and file extensions

Late work policy

Late penalty

  • work is due before class on the due date indicated on the schedule
  • for every 24 hours that any work is late, we will apply a 10% penalty on the grade, up to a maximum penalty of 30%.
  • after 72 hours, we will no longer accept the work.


You are automatically granted two extensions for late work up to one week overdue. You can use these for either individual exercises or quizzes, but not for any work involving a team or group. Please do not ask for further extensions.

Team project

  • The same team of 5-to-10 students will work on a project for the majority of the term.
  • The team proposes their own project ideas and plans with guidance/approval from instructor.
  • There will be several deliverables throughout the term.
  • You will receive a grade for the team project based on your individual contribution to the project balanced with the success of the project as a whole
    • Artifact submission and quality
    • Instructor observation
    • Peer evaluations

Inside class

Class time will be consumed by a variety of activities:

  • Lectures
  • Exercises - individual, team project group, and other group exercises
  • Project work time
  • Demonstrations and presentations
  • Exams

Outside of class

It is expected that you will do the majority of course work outside of class.

  • any assigned reading and/or videos
  • any assigned quizzes or individual exercises
  • team projects


There are no required books for this course. There are, in fact, few good books on this subject. However, material will be pulled from several sources online or on paper, including:

Inspirational Quotes

"One of our difficulties will be the maintenance of an appropriate discipline, so that we do not lose track of what we are doing.  We shall need a number of efficient librarian types to keep us in order..."
-Alan Turing, 1947 in his lecture to the London Mathematical Society
"The masters [programmers] are liable to get replaced because as soon as any technique becomes at all stereotyped it becomes possible to devise a [program] which will enable the electronic computer to do it for itself. It may happen however that the masters will refuse to do this. They may be unwilling to let their jobs be stolen from them in this way. In that case they would surround the whole of their work with mystery and make excuses, couched in well chosen gibberish, whenever any dangerous suggestions were made."
-Alan Turing, 1947
There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies."
-C.A.R. Hoare, 1980, in his ACM Turing Award Lecture