






Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
A course description for the Software Engineering course offered by the Computer Science Department at NYU's Courant Institute of Mathematical Sciences. The course covers modern software engineering techniques and examines the software development life-cycle (SDLC), including software specification, design, implementation, testing, and maintenance. The course evaluates past and current trends in software development practices including agile software development methods, DevOps, and Site Reliability Engineering (SRE).
Typology: Lecture notes
1 / 11
This page cannot be seen from the preview
Don't miss anything!







Spring 2021 - Jean-Claude FRANCHITTI (CSCI-GA.2440- 001 - Mon. 7:10 - 9:00 pm) COURSE DESCRIPTION : Successful software development depends on an in-depth understanding of how the phases and supporting activities of the software development life cycle work together. Each phase of the life cycle process contributes to a reliable, maintainable product that satisfies user requirements. The application of good engineering practices throughout the cycle dramatically improves the likelihood of delivering a quality software project on time, in scope and within budget. While there are many rigorous methodologies, in fact most approaches and tools have a mixture of strengths and weaknesses. Traditional development approaches result in models that are incomplete and quickly become out-of-sync with the application source code. Many modeling approaches focus on describing software designs, rather than solving business problems. Curiously, the various process models, including traditional SDLCs, Agile methods, DevOps, Design Thinking, Lean Startup, and others do not seem to provide a reliable all-encompassing end-to-end solution to software development. Therefore, it is important to understand how the various methods differs and/or complement each other. This course presents modern software engineering techniques and examines the software development life-cycle (SDLC), including software specification, design, implementation, testing and maintenance. The course evaluates past and current trends in software development practices including agile software development methods, DevOps, and Site Reliability Engineering (SRE) as described below.
the Capability Maturity Model (CMM) and Personal Software Process (PSP) will also be discussed.
John Wiley & Sons; ISBN-10: 0471202827; 1st edition (03/02) A Practical Guide to eXtreme Programming David Astels et al. Prentice Hall PTR; ISBN- 10 : 0130674826 ; 1st edition (02/02) PREREQUISITES Students enrolling in this class are expected to have taken CSCI-GA.2110- 001 (i.e., Programming Languages) and CSCI- GA.2250- 001 (i.e., Design of Operating Systems) and their prerequisites.. Knowledge of UML or a specific programming language is not required. For some of the practical aspects of the course, a working knowledge of an object-oriented programming language (e.g., Java) is recommended. Experience as a software development team member in the role of business analyst, (DevOps) architect, developer, or project manager is a plus. TEAM PROJECT All assignments (other than the individual assessments) will correspond to milestones in the team project. All team projects will involve multiple distributed sub-systems based on combinations of n-tier, P2P, or decentralized software architectures. Students may need to come up to speed with the programming languages and software tools that are applicable to their projects. Some of these software tools may not be covered in class. Students will be required to gather into at most two "pairs"; if there is an odd number of students in the class, then one (1) team of three (3) members will be permitted. There may not be any "pairs" of only one member. The instructor (and TA) will then assist students with forming "teams", ideally each consisting of two (2) "pairs”, but students are encouraged to form their own teams in advance. Optimally, students will develop and test their project code together with the other member of their programming pair. WEB SITES Related information can be found on the following Web sites:
25% Assignments 35% Projects 30% Final Exam 10% Attendance and Participation Extra credit will be granted periodically for particularly clever or creative solutions. Team members who do not contribute appropriately to an assignment will receive a significantly lower grade for that assignment than the rest of the team.