Agile Software Development & DevOps
New York University
Department of Computer Science
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, an Agile methodology and DevOps automation have increased the speed, robustness, and scalability with which software is developed today and have reduced the uncertainty of outcomes inherent in complex software development. Upon completion of this course, students will understand the core methodologies, technologies, and tools used in the software industry today.
Computer Systems Organization (CSCI-UA.0201) with a grade of C or better
Upon completing this course, students will be familiar with some of the most important software development tools and practices, including:
- Agile development / Scrum - students will work on team projects for roughly 2/3 of the semester following the specific Scrum workflow in order to achieve the goal of agile development.
- Version control / source code management - all project work in the course will be tracked using
gitversion control, which keeps an archive of all changes to the project.
- Code collaboration / code review - student teams will collaborate on code while avoiding conflicts by following a specific workflow and using tools like GitHub to share their code with others.
- Web architecture / full-stack development - by working on a mobile web application for the majority of the course, students will have a deep understanding of how The Web works, and will master all parts of full-stack development.
- User experience design - by researching the needs and aspirations of their target users and designing an application that satisfies those needs, students will experience the core tenets of UX design.
- Rapid prototyping - using industry-standard prototyping and design tools, such as Figma, students will create clickable rapid prototypes of their projects before a single line of code is written.
- Unit testing - software is complex and prone to faults or bugs. Students will learn how to write testing code that verifies the intended behavior of their production code, and will aim to have virtually all of their production code thoroughly tested before launching a product.
- Database integration - using MongoDB and the
mongooselibrary, students will learn best practices and how to do standard CRUD (Create, Read, Update, Delete) queries on a database.
- Deployment - students will configure commercial cloud web servers in order to host their applications so the public can access them over The Web.
To achieve mastery in these topics, students will take quizzes corresponding to the material covered in each lecture while also working with a single team on a single software project for the majority of the semester.
While significant class time is dedicated to hands-on student work, students are expected to collaborate with their teams for 10-15 hours each week reviewing instructional materials provided by the instructor and programming their software projects.
amos at cs dot nyu dot edu
Help resources available to you are listed in order of urgency of your problem:
Our course will use a message board (link to be distributed in class) 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. This is a resource best used when the answer is not required urgently.
Tutors for this course are waiting to answer your questions, either on our message board or during dedicated tutoring hours. Use tutoring for more involved questions and when you prefer a more immeidate answer.
Tutoring hours (all times in Eastern Time):
Talk with the instructor
For any issues at all, contact the instructor:
- see me before class
- raise your hand or simply speak during class
- see me after class
- come to my open office hours - hours to be distrubuted in class
Additional tutoring resources
Additional academic support is also available through the University Learning Center.
Attendance & participation
Attendance is mandatory. In-class and online message board participation is encouraged. Anecdotally, students who do not attend class regularly and who do not participate in discussions tend to do poorly.
Student and instructor interaction during class
Class sessions are a mixture of lecture, discussion, and group project work. During any lecture or discussion, students are generally encouraged to participate with questions, comments, and constructive criticism of the material being covered. On days when students work on group projects, students work together in small groups of typically 4-6 people to complete specific software projects, with help and guidance provided by the instructor.
Required software and hardware
All students require access to a desktop or laptop computer on which they can write software using a specific set of applications.
You will receive a grade calculated mechanically on the following rubric.
- 35%: Quizzes - primarily multiple choice
- 15%: Individual exercises - small exercises completed individually
- 50%: Team project - a single project created by a single team over the course of the semester
- The team project grade is divided equally into five separate grades - one for each “sprint”, where a sprint is an increment of work done over an approximately 2-week period.
- Each student’s grade for a given sprint will be scored equally according to 1) the amount of their individual code contributions for that period, 2) the fidelity of their adherence to the required way of completing the work, and 3) the quality of the work done by the team as a whole, as judged according to standards and conventions discussed in class.
- Specific requirements and expectations for each sprint are outlined in the given documentation for the sprint
Notification of grades
Students will be sent their complete individual grades via email approximately once per week.
Quizzes are completed outside of class. You must be logged into Google with your NYU Net ID account in Google in order to view the Quizzes. If you see an error message indicating you do not have permission to view a Quiz, it is because you are not logged into the correct NYU Net ID account.
Quizzes are submitted by submitting a Google Form.
- we will cover how to push code to GitHub
- unless you have good reason to do otherwise, follow best-practices for all basic file names and file extensions
Team projects are broken up into 5 “sprints” - iterations of work - each of which is approximately 2 weeks long. Students will receive a grade for each sprint based on the following:
- their personal contribution to the project (judged by lines of code added, lines of code deleted, number of “commits”, number of “merges” - we will cover these terms)
- the overall quality of the work the team has produced
- the fidelity of the team’s adherence to the agile development workflow prescribed in the course
All assigned work is due before class on the due date indicated on the schedule
- for every 24 hours that work is late, we apply a
10%penalty on the grade, up to a maximum penalty of
- after 72 hours, we will no longer accept the work.
Students are automatically granted 2 late assignment extensions of up to 3 days late each, with the exception that all assignments must be submitted before the last day of regular classes before the final exam period.
- when submitting an assignment for which you would like to use one of these automatic extensions, you must notify the grader that you are using the extension, otherwise your assignment will be rejected.
- for group work, each member of the group must use an extension (or lose points if none is available) for the entire group to submit work late.
- No additional extensions will be granted.
If a student requests a regrade of any work, we will regrade the work in full, not just the part that the student believes has been mis-graded.
Student Accommodations and Accessibility
Students who believe that they may need accessibility accommodations in this class are encouraged to contact the Moses Center for Student Accessibility at (212) 998-4980 as soon as possible to better ensure that such accommodations are implemented in a timely fashion.
Working with others and leveraging all resources available to you is a prerequisite for success. This is different from copying, cheating, plagiarism, and mental laziness. All submitted work must be your own. There are very reliable systems we use to detect plagiarism in computer code, such as moss and compare50. If you submit any work that is not your own, you risk failure or worse.
Please read the Computer Science department’s policy on academic integrity and the University-wide policy which supercedes it.