Difference between revisions of "Agile Software Development Course Syllabus"
|(One intermediate revision by the same user not shown)|
|Line 100:||Line 100:|
Click this link to join:
Click this link to join:
Revision as of 15:10, 10 September 2019
- 1 Course Description
- 2 Instructor
- 3 Tentative Topics
- 4 Software
- 5 Getting help
- 6 Grading
- 7 Submitting individual exercises
- 8 Late assignment policy
- 9 Team project
- 10 Inside class
- 11 Outside of class
- 12 Books
- 13 Inspirational Quotes
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.
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
- Demos and presentations
- Collaboration tools such as Git, GitHub, Slack, Kanban boards
Software development phases
"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
- Big Design Up-Front (BDUF)
Design and modeling
- Software architecture
- Design patterns
- Service Design
- Applied human-computer interaction
Data and databases
- Other No-SQL
- Git - https://git-scm.com
- GitHub - https://github.com
- Slack - https://slack.com
- Travis CI - https://travis-ci.com/
- Gliffy - https://www.gliffy.com/
- and more...
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
- see me before class
- raise your hand during class
- see me after class
- 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
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.
Work on team projects will not be accepted late.
- 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
Class time will be consumed by a variety of activities:
- Exercises - individual, team project group, and other group exercises
- Project work time
- Demonstrations and presentations
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:
- Software Engineering, 10th edition, Ian Sommerville
- Software Engineering, Ivan Marsic
- Introduction to Software Engineering, Wikibooks
"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