Albion College

CS 275

Software Development

Spring 2024

Everyone is awesome
colored lego minigifs
Especially you!

Course Schedule

January

SundayMondayTuesdayWednesdayThursdayFridaySaturday
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15


MLK Day - no classes
16


First day of classes
17

Course Introductions
18

19

20


Week 1
21

22

23

24


Last day to Drop and/or Add a course
25

26

27


Week 2
28

29

30

31

   

February

SundayMondayTuesdayWednesdayThursdayFridaySaturday
    
1


Math/CS Colloquium: Ramon Olavarria
2

3


Week 3
4

5

6

7

8


Math/CS Colloquium: Erik Davis
9

10


Week 4
11

12

13

14

15


Math/CS Colloquium: David A. Reimann
16

17


Week 5
18

19

20

21

22


Math/CS Colloquium: Stanley Ryan Huddy
23

Test #1
24


Week 6
25

26

27

28

29


Math/CS Colloquium: Paul Anderson
  

March

SundayMondayTuesdayWednesdayThursdayFridaySaturday
     
1

2


Week 7
3

4


Spring Break
5


Spring Break
6


Spring Break
7


Spring Break
8


Spring Break
9


Week 8
10

11

12

13

14


Math/CS Colloquium: Mark Bollman
Pi Day
15


Math/CS Colloquium: Timothy L. Clark
16


Week 9
17

18


Academic Advising
19


Math/CS Colloquium: Methsarani Premathilaka
Academic Advising
20


Academic Advising
21


Math/CS Colloquium: Angela Morrison
Academic Advising
22


Academic Advising
23


Week 10
24

25


Academic Advising
W deadline
26


Academic Advising
27


Academic Advising
28


Math/CS Colloquium: Elena Wang
Academic Advising
29


Academic Advising
Classes End at 1 p.m.
30


Week 11
31

      

April

SundayMondayTuesdayWednesdayThursdayFridaySaturday
 
1

2

3

4


Math/CS Colloquium: Chengyong Feng
5

Test #2
6


Week 12
7

8


Solar Eclipse
9

10

11


Math/CS Colloquium: Michael A. Jones
12

13


Week 13
14

15

16

17

18


Elkin Isaac Symposium
Purple & Gold Weekend
19


Purple & Gold Weekend
20


Purple & Gold Weekend
Week 14
21

22

23

24

25


Math/CS Colloquium: Senior Majors
Last day of classes
Last day to register for CR/NC option
26


Reading Day
27


Final Exams
Week 15
28

29

Final Exam
11:30 am – 1:30 pm


Final Exams
30


Final Exams
    

May

SundayMondayTuesdayWednesdayThursdayFridaySaturday
   
1


Final Exams
2

3

4


Commencement
Week 16
5

6

7

8

9

10

11

12

13

14

15

16

17

18

19
20
21
22
23
24
25
26
27
28
29
30
31
 

Course Syllabus

Professor

Name and Title
Dr. David A. Reimann, Professor (he/him/his)
Department of Mathematics and Computer Science
Albion College
Albion, Michigan
Office
252 Putnam
Student Meetings

I want you to succeed in this course! Contact me as soon as possible if you have questions. Don't wait until you are completely lost to ask for help. Drop-in to my office or meet with me virtually (via Google Meet) to talk about the course or personal struggles you are facing that affect your course performance. It is often most productive if you have specific questions on assignments or material covered in class.

These times I have set aside to provide you individual help. I will be regularly available

  • Monday 2:15–4:00 pm,
  • Wednesday 2:15–4:00 pm,
  • Thursday 2:15–3:00 pm,
  • and by appointment.
For simple questions, chatting before or after class is often the most convenient.

I will generally not directly answer your question or directly solve homework problems. Rather, I will work with you for you to discover solutions by clarifying and leading you along a promising path. This might be me asking you questions and working with you in solving similar problems.

These are also good times to discuss more general topics such as mathematics, computer science, Albion, research, graduate school, careers, or if you just want to hangout! It is also important to come see me if you missed class.

Email
dreimann@albion.edu
Website
http://zeta.albion.edu/~dreimann/
Phone
517-629-0426 (Office)
517-629-0361 (Department)
Faculty Role
In teaching, faculty equip students with the knowledge, skills, and creativity grounded in a belief in students' ability to learn and the desire to help students engage in their own learning. Faculty are not babysitters — we expect you to take personal responsibility for your learning.

Communication

The single biggest problem in communication is the illusion that it has taken place.
George Bernard Shaw
playwright
Class
The best time to ask general questions is in class. It is likely that if you are confused, others are as well. Talk to me before or after class about other issues. For example, issues about absences, setting up a special appointment, questions about assignments, etc.
Office
Come see me in my office for help with the course or other questions you might have.
Email
Email me with questions, updates, or meeting requests.
Google Chat
Send me a chat message with questions, updates, or meeting requests.
General
It is hard to over communicate.
I want you to succeed!

Course

Course
CS 275
Course Name
Software Development
Credit
1.0 Unit
CRN
2055 (Lecture)
Catalog Description
An introduction to the techniques of developing large software projects including unit testing, version control and build management. Covers the popular industrial languages C and C++ and includes a large-group programming project.
Prerequisite
CS 173
Meeting Times
Monday, Wednesday, and Friday 10:30-11:35 pm (Palenske 221)
Website
http://zeta.albion.edu/~dreimann/Spring2024/courses/cs275/

Resources

Required Books
Engineering Software Products by Ian Sommerville
Recommended Course Software and Hardware
  1. Google Meet
  2. A modern up-to-date web browser (or several)
Required and Optional Computer Hardware
  1. Windows, Mac, or Linux - a Chromebook will not be sufficient
  2. A modern up-to-date web browser (or several)
  3. A network connection — an optional hardwired connection is best
  4. An optional auxiliary monitor can be helpful
Albion College Technology
Guides & Resources - For Students

Student Learning Outcomes

The learning objectives for this course are aligned with learning objectives from Computer Science Curricula 2013: Curriculum Guidelines for Undergraduate Degree Programs in Computer Science, a product of The Joint Task Force on Computing Curricula Association for Computing Machinery (ACM) IEEE Computer Society.

This learning objectives of this course are mainly aligned with the "Software Engineering (SE)" knowledge area.

Knowledge Units Student Learning Outcomes
SE/Software Processes
  1. Describe how software can interact with and participate in various systems including information management, embedded, process control, and communications systems. [Familiarity]
  2. Describe the relative advantages and disadvantages among several major process models (e.g., waterfall, iterative, and agile). [Familiarity]
  3. Describe the different practices that are key components of various process models. [Familiarity]
  4. Differentiate among the phases of software development. [Familiarity]
  5. Describe how programming in the large differs from individual efforts with respect to understanding a large code base, code reading, understanding builds, and understanding context of changes. [Familiarity]
  6. Explain the concept of a software lifecycle and provide an example, illustrating its phases including the deliverables that are produced. [Familiarity]
  7. Compare several common process models with respect to their value for development of particular classes of software systems taking into account issues such as requirement stability, size, and non-functional characteristics. [Usage]
SE/Software Project Management
  1. Discuss common behaviors that contribute to the effective functioning of a team. [Familiarity]
  2. Create and follow an agenda for a team meeting. [Usage]
  3. Identify and justify necessary roles in a software development team. [Usage]
  4. Understand the sources, hazards, and potential benefits of team conflict. [Usage]
  5. Apply a conflict resolution strategy in a team setting. [Usage]
  6. Use an ad hoc method to estimate software development effort (e.g., time) and compare to actual effort required. [Usage]
  7. List several examples of software risks. [Familiarity]
  8. Describe the impact of risk in a software development lifecycle. [Familiarity]
  9. Describe different categories of risk in software systems. [Familiarity
SE/Tools and Environments
  1. Describe the difference between centralized and distributed software configuration management. [Familiarity]
  2. Describe how version control can be used to help manage software release management. [Familiarity]
  3. Identify configuration items and use a source code control tool in a small team-based project. [Usage]
  4. Describe how available static and dynamic test tools can be integrated into the software development environment. [Familiarity]
  5. Describe the issues that are important in selecting a set of tools for the development of a particular software system, including tools for requirements tracking, design modeling, implementation, build automation, and testing. [Familiarity]
  6. Demonstrate the capability to use software tools in support of the development of a software product of medium size. [Usage]
SE/Requirements Engineering
  1. List the key components of a use case or similar description of some behavior that is required for a system. [Familiarity]
  2. Describe how the requirements engineering process supports the elicitation and validation of behavioral requirements. [Familiarity]
  3. Interpret a given requirements model for a simple software system. [Familiarity]
  4. Describe the fundamental challenges of and common techniques used for requirements elicitation. [Familiarity]
  5. List the key components of a data model (e.g., class diagrams or ER diagrams). [Familiarity]
  6. Identify both functional and non-functional requirements in a given requirements specification for a software system. [Usage]
  7. Conduct a review of a set of software requirements to determine the quality of the requirements with respect to the characteristics of good requirements. [Usage]
SE/Software Design
  1. Articulate design principles including separation of concerns, information hiding, coupling and cohesion, and encapsulation. [Familiarity]
  2. Use a design paradigm to design a simple software system, and explain how system design principles have been applied in this design. [Usage]
  3. Construct models of the design of a simple software system that are appropriate for the paradigm used to design it. [Usage]
  4. Within the context of a single design paradigm, describe one or more design patterns that could be applicable to the design of a simple software system. [Familiarity] For a simple system suitable for a given scenario, discuss and select an appropriate design paradigm. [Usage]
  5. Create appropriate models for the structure and behavior of software products from their requirements specifications. [Usage]
  6. Explain the relationships between the requirements for a software product and its design, using appropriate models. [Assessment]
  7. For the design of a simple software system within the context of a single design paradigm, describe the software architecture of that system. [Familiarity]
  8. Given a high-level design, identify the software architecture by differentiating among common software architectures such as 3-tier, pipe-and-filter, and client-server. [Familiarity]
  9. Investigate the impact of software architectures selection on the design of a simple system. [Assessment]
  10. Apply simple examples of patterns in a software design. [Usage]
  11. Describe a form of refactoring and discuss when it may be applicable. [Familiarity]
  12. Select suitable components for use in the design of a software product. [Usage]
  13. Explain how suitable components might need to be adapted for use in the design of a software product. [Familiarity]
  14. Design a contract for a typical small software component for use in a given system. [Usage]
SE/Software Construction
  1. Describe techniques, coding idioms and mechanisms for implementing designs to achieve desired properties such as reliability, efficiency, and robustness. [Familiarity]
  2. Build robust code using exception handling mechanisms. [Usage]
  3. Describe secure coding and defensive coding practices. [Familiarity]
  4. Select and use a defined coding standard in a small software project. [Usage]
  5. Compare and contrast integration strategies including top-down, bottom-up, and sandwich integration. [Familiarity]
  6. Describe the process of analyzing and implementing changes to code base developed for a specific project. [Familiarity]
  7. Describe the process of analyzing and implementing changes to a large existing code base. [Familiarity]
SE/Software Verification and Validation
  1. Distinguish between program validation and verification. [Familiarity]
  2. Describe the role that tools can play in the validation of software. [Familiarity]
  3. Undertake, as part of a team activity, an inspection of a medium-size code segment. [Usage]
  4. Describe and distinguish among the different types and levels of testing (unit, integration, systems, and acceptance). [Familiarity]
  5. Describe techniques for identifying significant test cases for integration, regression and system testing. [Familiarity]
  6. Create and document a set of tests for a medium-size code segment. [Usage]
  7. Describe how to select good regression tests and automate them. [Familiarity]
  8. Use a defect tracking tool to manage software defects in a small software project. [Usage]
  9. Discuss the limitations of testing in a particular domain. [Familiarity]
SE/Software Evolution
  1. Identify the principal issues associated with software evolution and explain their impact on the software lifecycle. [Familiarity]
  2. Estimate the impact of a change request to an existing product of medium size. [Usage]
  3. Use refactoring in the process of modifying a software component. [Usage]
  4. Discuss the challenges of evolving systems in a changing environment. [Familiarity]
  5. Outline the process of regression testing and its role in release management. [Familiarity]
  6. Discuss the advantages and disadvantages of different types of software reuse. [Familiarity]
SE/Software Reliability
  1. Explain the problems that exist in achieving very high levels of reliability. [Familiarity]
  2. Describe how software reliability contributes to system reliability. [Familiarity]
  3. List approaches to minimizing faults that can be applied at each stage of the software lifecycle. [Familiarity]

Performance Evaluation

Assignment Policies
Generally, no credit will be given for assignments submitted after the due date except in the cases of an official College event or documented serious circumstance beyond your control. If you miss class because of participation in an official College event you must make prior arrangements with me. In situations of a documented serious circumstance beyond your control, please contact me as soon as possible. With an excused absence, it is possible that an alternative assignment will be used. Credit for other late assignments will be at the discretion of the instructor.
Extra Credit
I may include some optional extra credit on some assignments. However, you should plan on completing the regularly scheduled course assignments to earn points in the course.
Elements
Element Points Description
Homework 200 (10 @ 20 points each)
Course Project 400
Engagement 100
Tests 200 2 @ 100 points each
Final Exam 100 Final
Total 1000  
Grade Determination
Points % Grade Interpretation
93.0–100.0+ 4.0 Represents work outstanding in quality. The student not only shows unusual mastery of the required work for the course, but also has independently sought out and used additional related materials, demonstrating the ability to discover new data, to develop new insights and to bring them to bear on the work at hand.
90.0–92.9 3.7  
87.0–89.9 3.3  
83.0–86.9 3.0 Represents work which is higher in quality than that of a 2.0, or more than satisfactory. The student has shown the ability and the initiative to fulfill more than the basic requirements of the course.
80.0–82.9 2.7  
77.0–79.9 2.3  
73.0–76.9 2.0 Represents work which fulfills all of the basic requirements for the course. It means that the student has a grasp of the material and techniques or skills sufficient to proceed with more advanced courses in the area.
70.0–72.9 1.7  
67.0–69.9 1.3  
60.0–66.9 1.0 Represents work seriously attempted but which is below the 2.0 level in quantity and quality. The student is advised not to continue advanced work in the field.
0–59.9 0.0 Represents work unsatisfactory in either quantity or quality. It results in the student's not being able to continue with further work in the field and results in no credit, although it is recorded on the permanent record.
  I Incompletes may be given only because of illness, or other unavoidable circumstances, as approved by the Petitions Committee. An Incomplete is not to be issued to a student who simply has failed to turn in some assigned work before the end of the semester. The "I" grade should be used rarely and for legitimate reasons. In order to receive an Incomplete, a student must have finished at least half of the total graded work required by the class with a passing grade at the time they take the incomplete. They must also create a completion plan to finish the incomplete work in the shortest amount of time and have the plan approved by the faculty member teaching the course. A grade of incomplete must be removed by the Monday of the ninth week of the semester following the one in which the incomplete was given. Summer is not included as a semester. Incomplete grades given in the summer must be completed by the Monday of the ninth week in the following semester. At the end of the specified time period, the faculty member will assign a grade based on the amount of work satisfactorily completed. The grade of "I" carries no quality points. Students with two or more outstanding Incompletes may register for no more than three courses in the following semester. Should a student reduce the total number of Incompletes to one or zero before the end of the add/drop period, that student would be allowed to register for a full course load of up to 4.5 units.

Attendance and Conduct

Classroom Issues

I expect you to attend class!

Many of the topics and content explored in the course will be taught and communicated via class demonstrations, activities, and discussions. Therefore, attendance and participation are crucial for a complete understanding of course material.

Some class sessions will be recorded. This is being done as a resource for students who miss the class as it is happening live, either due to illness or some other excused reason, and for students who simply wish to review the class session as a study tool. The video and audio recording are to be used for educational purposes only and will be available through Google for the duration of the course. The file is meant only for students currently enrolled in the course and may not be copied or shared with anyone else.

Policies and Expectations

The following is the Albion College statement on attendance: "Regular attendance in all classes is expected. Every absence from class is inevitably a loss — usually one which can never be made up. A student has the responsibility to inform his or her faculty member, whenever possible in advance, of an absence due to serious or prolonged illness, and verification of absences due to emergency reasons, may be obtained from the Office of Residential Life."

In this course class absences are only excusable in documented extreme cases of unforeseen hardship (such as illness or the need for quarantining) or official College event, as described in the Student Handbook. Please notify me in writing (email is preferred) prior to official college events (sporting, class trips, etc.) that make it impossible for you to attend class. If you miss class because of participation in an official College event you must make prior arrangements with me. In extreme cases of unforeseen hardship, please contact me as soon as possible. You are responsible for all material and assignments even if you miss class.

In the event that you find yourself experiencing COVID-19 related symptoms, I request that you do the following:

  • Stay home! This is the best way to prevent spreading COVID-19 as supported by scientific evidence.
  • Follow College guidelines for daily symptom reporting found on the Together Safely page.
  • If you are self-quarantining/isolating, it is my expectation that you will contact me to review missed coursework and arrange a timeline and plan for completing that work. In the case that you are not able to make up missed coursework by the end of the semester, we will need to consider options that may include a withdrawal or incomplete for the semester.

Albion College Academic Religious Support Policy: I will make every reasonable effort should be made to help students avoid negative academic consequences when their religious obligations conflict with academic requirements. Absence from classes or examinations for religious reasons does not relieve students from responsibility for any part of the course work required during the period of absence. Students who expect to miss classes, examinations, or other assignments as a consequence of their religious observance will be provided with a reasonable alternative opportunity to complete such academic responsibilities. It is the obligation of students to provide faculty with notice of the dates of religious holidays on which they will be absent at the beginning of the semester. Should disagreement arise over any aspect of this policy, the parties involved should contact the Provost’s Office.

Should you miss a class, it is your responsibility to contact me to review missed coursework and arrange a timeline and plan for completing that work. In the case that you are not able to make up missed coursework by the end of the semester, we will need to consider options that may include a withdrawal or incomplete for the semester.

In cases where you have not taken personal responsibility, your ability to earn points will be at the sole discretion of the instructor.

I will do what I can to work with students to facilitate their successful completion of the course. I encourage you to contact me if you have questions or concerns. The Office of Student Development is also available for assistance regarding extended absences.

Academic Honesty, Integrity, and Expectations

Policies

As an academic community, Albion College is firmly committed to honor and integrity in the pursuit of knowledge. Therefore, as a member of this academic community, each student acknowledges responsibility for his or her actions and commits to the highest standards of integrity. In doing so, each student makes a covenant with the college not to engage in any form of academic dishonesty, fraud, cheating, or theft.

The goal of this course is for you to learn a rigorous academic discipline, not penmanship, typing, or other forms of plagiarism. Chapter III of the Student Handbook details instances and penalties for academic dishonesty. It also describes acceptable usage of the campus computing/networking facilities. In this class you are expected to do your own work unless explicitly stated.

Here are some things which will be considered cheating:

  • Using or turning in another's work as you own - with or without their permission.
  • Allowing someone else to use or turn in your work as theirs - in whole or in part.
  • Joint effort on an assignment with individual submissions represented as individual work.
  • If a student cannot explain why the solution is correct or how the solution was obtained.

Here are some things which are encouraged:

  • A submission using help from the instructor, student assistants, or the texts.
  • Discussion of the concepts related to the course material.
  • Discussion of assignments to understand what is required.

Typically, I grade papers one problem at a time. If you turn in someone else's work as you own, it really stands out. Please do your own work! If you are having trouble on an assignment come see me as soon as possible - I'm here to help!

We, as students and faculty, have the privilege and challenge of promoting higher standards of ourselves, the College, and society in general. Here are several expectations we should have this semester.

What you should expect of me. What I expect from you.
To attend class regularly and punctually and to adhere to the class schedule. To attend class regularly and punctually.
Come to class prepared. Come to class prepared.
Grade and return work in a reasonable amount of time. Fulfill all course assignments and requirements.
Know course material thoroughly and prepare and present it conscientiously. Uphold academic honesty in all activities.
Maintain scholarly, professional, and courteous demeanor in class. Maintain scholarly, professional, and courteous demeanor in class.
Be available at reasonable times for consultation. Keep all appointments except for extreme cases.

Communication is essential in any relationship. Our student-teacher relationship is no exception. If you have any concerns with the class material or logistics, please talk to me as soon as possible.

Educational Environment

Discriminatory Harassment
Albion College seeks to create a welcoming environment in which all students can learn, but we recognize that harassment may still occur. If a student experiences harassment or discriminatory treatment, there are several ways they can report it. For details, please see https://www.albion.edu/offices/student-development/current-students/report-discriminatory-harassment/.
Bias Reporting
In line with our commitment to fostering a culture of belonging on campus, we have created a bias reporting system for use by all members of our community. This tool allows students, faculty, and staff to report individual incidents of bias on or off campus and serves as a mechanism to help us address systemic issues of bias more broadly. For more information and/or to report a bias incident, please see https://www.albion.edu/offices/office-of-belonging/bias-reporting/.
Relationship Violence, Sexual Assault, and Sexual Harassment

Albion College is committed to providing an educational environment where we are all able to learn, teach, and work freely and where the dignity, safety, and self-respect of all members of our community are protected. Sexual assault, sexual harassment, domestic violence, dating violence, stalking, and sex-based discrimination are incompatible with this mission and will not be tolerated at Albion College.

If you have experienced domestic violence, dating violence, stalking, sexual assault, sexual harassment or sex-based discrimination, please contact the College’s Title IX Coordinator, Kelly Finn (titleix@albion.edu) to learn about possible support measures, resources and options that are available to you. To view the full Title IX policy and information on reporting visit www.albion.edu/offices/office-of-belonging/title-ix/.

On-campus confidential resources for victims/survivors of sexual assault include Mikayla Campbell, Director of the Anna Howard Shaw Center for Gender Equity and Victim Advocacy (mcampbell@albion.edu), Counseling Services (517-629-0236), and Sexual Assault Advocates(SAAs).

If you wish to report to the police, you can contact Albion Department of Public Safety (517-629-3933 — non-emergency) or Michigan State Police Post Number 54 (269-558-0500 — non-emergency) or call 911 if you are experiencing an emergency.

Academic Accommodations and Support

Instructor Support

This course will be challenging because of the complexity and breadth of the material. Most students will struggle and need additional help at some point during the semester; I expect that and so should you. Learning is hard work! Successful students attend most all classes, start assignments early, and complete all assignments. They use feedback to help master the material, which is critical in a course where material builds throughout the course. Successful students develop effective study skills and take advantage of College-wide support resources listed below. Successful students quickly reach out to me about their struggles.

If you are struggling with the course material or keeping up with the pace of the class, seek help as soon as you are experiencing difficulty. Do not wait until the end of the term to seek help!

Ac­com­mo­da­tions statement

It is the policy of Albion College to accommodate students with disabilities and qualifying diagnosed conditions in accordance with federal and state laws. Any student who feels that they may need an accommodation based on the impact of a learning, psychiatric, physical, or chronic health diagnosis, should contact Accessibility Services Director, Elizabeth Rudolph (erudolph@albion.edu), to develop a plan for reasonable accommodation(s) based on supporting documentation.

If you have completed this process and requested accommodations for this semester, plan to meet with Elizabeth Rudolph as early as possible to discuss a plan for implementing these modifications in this class. It is best to schedule these meetings at least one week prior to their implementation.

Accessibility Services is housed in the Cutler Center on the first floor of the Stockwell Library and is open during regular business hours. The main phone is 517-629-0562 or email cutler@albion.edu for more information.

Cutler Center

The Cutler Center for Student Success and Academic Achievement is located in the Stockwell Library and provides free supplemental peer tutoring (math, science, economics and more), writing assistance, fellowship advising, accessibility accommodations, success coaching, supplemental advising, and loaner laptops and calculators. The Cutler Center has student drop-in hours Monday–Friday noon–2pm with their 15 Minute Fix. The Cutler Center is also home to the First-Year Peer Mentor Program. To connect with the Cutler Center, please email cutler@albion.edu or call 517-629-0562 to be connected to the resource you need to be successful this term.

Covid-19

General Information

Some faculty and students may be feeling uncertain about wearing or not wearing a mask in class. With no current mask mandate in place at this time, this is an individual decision for members of the Albion community and one we must respect. With regard to masks, I encourage you to do what makes you most comfortable to be in the classroom and ready to learn.

Together Safely

See the Together Safely page for detailed information on Covid-19.

Mental Health

Resources

Your mental health is more important than your grades!

If you or someone you know is struggling with depression, mood changes, excessive worry, problems with eating and/or sleeping, or family or interpersonal problems, Albion College provides mental health services to support students. Counseling Services offers free, confidential psychological services: call 517-629-0236 or email counseling@albion.edu to talk to someone or, if this is an emergency, call 517-629-1234 and ask to speak to the counselor on call.