A comprehensive practical introduction to all phases of software development including life cycle models, requirements analysis, design, implementation, testing and validation, maintenance, and evolution, focusing on agile software development.

In this course, you will get a first-hand experience working with a customer to develop and deliver a real-life software product. In the beginning of the semester, you will form self-managing groups of 5-6 students, and work iteratively on developing a large software project. You will learn modern tools for managing projects, working in teams, developing applications, and deploying your project on the cloud. You will use Agile Scrum as a software development methodology, and you will create increments of your project in two-week sprints.

Moodle Course Page
Semester Fall 2022
Date Time, Location TR 11:00 - 12:15 pm, Davis 117
Instructor Naser Al Madi
Office: Davis 115
Email: nsalmadi@colby.edu
  • CS 231 - Data Structures and Algorithms
Course Goals
  1. Understand the differences, advantages, and disadvantages of software development life cycle models
  2. Fully explain and contrast agile and waterfall process models
  3. Demonstrate the ability to perform standard software development procedures such as project planning, issue tracking, and version control, as part of a team
  4. Create and perform software validation and testing
  5. Create a project plan with requirements documents, such as user stories or other artifacts
  6. Evaluate the role evolution and refactoring play in the software development process

There are weekly/biweekly milestones (Sprints) for the project. The sprints are designed to break your project into smaller increments, which leads you to work better with your group members and can allow me to provide support and feedback more efficiently.

The following table lists the expected content of each sprint.

1 1. Version Control (Git/GitHub)
  • Set up GitHub account and custom profile page
  • Upload a coding project and create readme file
  • Demonstrate mastery of Git commands and concepts
  • Short written report documenting your work
2 2. Requirements Gathering and Planning
  • Document project requirments (specification)
  • Create user stories backlog (including wish list)
  • Diagram of system components
  • Create wireframe mockup using draw.io
  • Short written report with a contribution list of each team member
4 3. Sprint: Static Website
  • Create a functional mock of your website using static pages (HTML, CSS, ..)
  • Host Static website on GitHub Pages
  • Short presentations in class from each group
  • Short written report with a contribution list of each team member
5 4. Sprint: Flask App
  • Create flask app with main feature from each group
  • implement features from backlog
  • Short presentations in class from each group
  • Short written report with a contribution list of each team member
7 5. Sprint: CI/CD pipeline
  • Create CI/CD integration on AWS for each group
  • implement features from backlog
  • Short presentations in class from each group
  • Short written report with a contribution list of each team member
9 6. Sprint: Integration and Testing
  • Integrate all apps into a single app on AWS
  • Add tests to CI/CD pipeline
  • implement features from backlog
  • Short presentations in class from each group
  • Short written report with a contribution list of each team member
11 7. Presentation: final presentation rehearsal
  • Each group presents what they worked on
  • Continue to implement features from backlog
  • Refactored code + better design patterns
  • Quality metrics: coverage, complexity, readability, and coding style errors
  • Short written report with a contribution list of each team member
12 8. Presentation: Final Presentation
  • Initial analysis of results
  • Discussion of challenges to achieving this milestone
  • Short written report with a contribution list of each team member
Finals 9. Final Project
  • Contribution to Open-source project.
  • Short written report with a contribution list of each team member
Class Participation Class time will be used as follow:
  • Class time will be divided almost equally into small lectures and active learning sessions. Each lecture will prepare you for the milestone you are working on, and the active learning part will give you the opportunity to work with your teammates on applying what you learned.
  • For almost every milestone, each group will give an oral presentation with slides to update the rest of the class on your progress. Each group member should present the part they worked on. Everyone in the class is expected to ask questions and everyone in the group is expected to answer questions.
  • Attending classes is an easy way for you to work with your group members and/or get help from me. So you are expected to attend classes. Let me and your group members know beforehand if you have to miss a class.
Grading The course grade will be determined as follows:
Activity Percentage Graded as individual or group Grading Rubrics
Milestones 50% Individual The grade for each milestone depends on the content, your contribution, and your oral presentation. I want to know what you did, if you ran into problems and didn't make much significant progress, talk to me about it. The oral presentations is based largely on your ability to communicate your work to me and to your classmates. In order to receive a high grade, the contributions of each team member must be well-integrated into a coherent presentation. This means you should spend more time thinking about how to talk to each other and to your classmates. Also, it is perfectly acceptable to spend most of your presentation talking about challenges, since that is how we learn.
Homework 5% Individual Graded in a binary fashion:
1 if you made a serious attempt
0 otherwise.
Quizzes 15% Individual Short weekly or biweekly quizzes.
Teamwork and Participation 10% Individual The grade for participation depends largely on your teamwork skills, and you are expected to attend the classes.
Final Presentation 10% Group The presentation will be graded based on the design and content.
Final project 10% Individual Graded based on how sucessful you are at contributing to an active open-source project.
Collaboration, Academic honesty

This policy applies to anyone you work with other than your partner.

Computer science, both academically and professionally, is a collaborative discipline. In any collaboration, however, all parties are expected to make their own contributions and to generously credit the contributions of others. In our class, therefore, collaboration on homework and programming assignments is encouraged, but you as an individual are responsible for understanding all the material in the assignment and doing your own work. Always strive to do your best, give generous credit to others, start early, and seek help early from both your professors and classmates.

The following rules are intended to help you get the most out of your education and to clarify the line between honest and dishonest work. We reserve the right to ask you to verbally explain the reasoning behind any answer or code that you turn in and to modify your project grade based on your answers. It is vitally important that you turn in work that is your own. We do use automated plagiarism detection software, so please be sure to abide by these, rather minimal, rules. Reports of academic dishonesty are handled by an academic review board and a finding of academic dishonesty may result in significant sanctions. For more details on Colby's Academic Integrity policies and procedures, see colby.edu/academicintegrity.

  • If you have had a substantive discussion of any programming project with a classmate, then be sure to cite them in your write-up. If you are unsure of what constitutes "substantive", then ask me or err on the side of caution. As one rule of thumb, if you see more than 10 lines of someone else's code, then you should cite them. You will not be penalized for working together.
  • You must not copy answers or code from another student either by hand or electronically. Another way to think about it is that you should be talking English with one another, not program languages.
  • Assistive code autocomplete systems that generate more than a single token of code are not permitted. You are expected to write all your code on your own and be able to explain it and rewrite it without assistance.
The Colby Affirmation

Colby College is a community dedicated to learning and committed to the growth and well-being of all its members.

As a community devoted to intellectual growth, we value academic integrity. We agree to take ownership of our academic work, to submit only work that is our own, to fully acknowledge the research and ideas of others in our work, and to abide by the instructions and regulations governing academic work established by the faculty.

As a community built on respect for ourselves, each other, and our physical environment, we recognize the diversity of people who have gathered here and that genuine inclusivity requires active, honest, and compassionate engagement with one another. We agree to respect each other, to honor community expectations, and to comply with College policies.

As a member of this community, I pledge to hold myself and others accountable to these values. More ...

Title IX Statement

Colby College prohibits and will not tolerate sexual misconduct or gender-based discrimination of any kind. Colby is legally obligated to investigate sexual misconduct (including, but not limited to, sexual assault and sexual harassment) and other specific forms of behavior that violate federal and state laws (Title IX and Title VII, and the Maine Human Rights Act). Such behavior also requires the College to fulfill certain obligations under two other federal laws, the Violence Against Women Act (VAWA) and the Jeanne Clery Disclosure of Campus Security Policy and Campus Statistics Act (Clery Act). To learn more about what constitutes sexual misconduct or to report an incident, see: http://www.colby.edu/studentlife/handbook-section/f-sexualmisconduct/

I am committed to all Colby students feeling safe, accepted, and included in all aspects of their college experiences, including this course. Colby prohibits and will not tolerate sexual misconduct or gender based discrimination of any kind and is obligated, by federal and state laws, to respond to reports and provide resources to students. As your professor I am considered a "responsible employee" which requires me to report incidence of sexual misconduct, dating violence, or harassment to the Title IX Coordinator.

If you wish to access confidential support services, you may contact:

  • The Counseling Center: 207-859-4490
  • The Title IX Confidential Advocate, Emily Schusterbauer: 207-859-4093
  • The Office of Religious and Spiritual Life: 207-859-4272
  • Maines's 24/7 Sexual Assault Helpline: 1-800-871-7741
Religious Holidays

Colby College supports the religious practices of students, faculty, and staff, but we don't always know which people will observe which holidays. Since I need to plan course activities in advance, I need to know in advance, if you need to miss a class or have a deadline adjusted in order to observe a holiday. Please notify me by email at least 14 days in advance of any religious holiday that will affect your ability to participate in this course.

© 2022 Naser Al Madi. Page last modified: 01/10/2022