Difference between revisions of "Agile Software Development Course Syllabus"

From Knowledge Kitchen
Jump to navigation Jump to search
m (Slack)
m (Slack)
Line 99: Line 99:
Click this link to join:  
Click this link to join:  
* https://join.slack.com/t/nyuagile/shared_invite/enQtNzEyMjk5NzI3NTM4LWRjN2JmNzVmOTdlNzViNjQxYjQyNmZmZDEzMTgzNWE1Y2JlOTE4Y2U3MGQ1MWRjNmZhZDQ4NDI5ODYwMDc3ZjU
* https://join.slack.com/t/nyuagile/shared_invite/enQtNzU2ODk1MTQyMjI0LTJhZGI4Yzg2MGNjMGFhM2ZiZjUxNWNjOGUzNjAwZGFkMzZiMThhYTkxZDFhNzliYzZhMWJlOGQyNjZhNzU3MDQ
Once joined, [[#Submitting individual exercises|set up a channel]] where you will submit assignments.
Once joined, [[#Submitting individual exercises|set up a channel]] where you will submit assignments.

Revision as of 10:47, 11 September 2019

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, 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


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 course uses Slack as its main communication channel for announcements and discussion. This is a good place to ask questions that anyone - other students, graders, tutors, or the professor - can answer.

You are not required to supply any personally-identifiable information when signing up for slack. Discuss with the professor if you have concerns or questions about privacy.

Click this link to join:

Once joined, set up a channel where you will submit assignments.


Our tutor, Karan, will be available in WWH Room 412 at the following times:

  • Monday: 10 a.m - 12 p.m; 2 - 4 p.m
  • Wednesday: 2 p.m - 5 p.m
  • Tuesday: 1:00 p.m - 4 p.m

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

Talk with the professor

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


  • Quizzes - 5%
  • Midterm exam - 10%
  • Final exam - 15%
  • Individual exercises - 15%
  • Participation - 15%
  • Team project - 40%

Submitting individual exercises

Each student must create a private channel in Slack..

  • 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 Slack will contain the word 'Grader' in them.

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

  • Include a polite message with your name and the name of the assignment
  • if submitting 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 assignment policy

Individual exercises

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 projects

Work on team projects will not be accepted late.

Team project

  • The same team of 4+/-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 system of instruction tables 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