Agile Software Development 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.

Instructor

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
  • Team communication
    • Code level
    • Documentation
    • Demos and presentations
    • Tools such as GitHub, Slack, Trello
  • Change management
  • Project planning and management

Teamwork

  • Personality types
  • Team formation
  • Roles and responsibilities
  • Task estimation and assignment

Software development phases

  • Specification
  • Development
  • Validation
  • Evolution

Refactoring

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

Optimization

"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

Frameworks

Timing

  • Concurrency
  • Asynchronicity

Data and databases

  • SQL
  • MongoDB
  • Other No-SQL
  • Hadoop

Cloud services

  • AWS
  • Azure

Software

Getting help

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

FAQ

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.

Slack

There is a slack group for this class:

  • TBD

Tutoring

Our tutors will be available at the following times:

  • TBD

If you have question for the tutors at other times, either direct message them on Slack (if something private), or post something to the #tutoring Slack channel (if you don't mind sharing the conversation with others), and they'll 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

Additional tutoring resources

Grading

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

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

Books

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