CS-340: Software Engineering

Syllabus

Course Staff

Instructor

Kevin Angstadt (he/him/his)

Office: Bewkes 121-1
Student Hours: QRC Lounge (outside Valentine 124)

Email: kangstadt@stlawu.edu
Communication Hours: I regularly check Email and Piazza 9-5 on weekdays. While I may respond outside those hours, I make no guarantees.
Addressing: I encourage you to call me by any one of the following names. Please use what makes you feel the most comfortable.
  • Kevin
  • Prof./Dr. Angstadt
  • Prof./Dr. A
  • Prof./Dr. Kevin

Kevin Angstadt

Course Information

Spring 2023
Meets: MW 2:30–4 PM
Room: Bewkes 107
Course Requirements:

  • Students must have completed CS-256 or have the permission of the instructor. While coding is not the main focus of this course, you are expected to have competence in both Python and Java.
  • Students will benefit from having access to a personal computer during class time.
  • Students are expected to attend class regularly.

Required Materials

None. Readings will be provided on the course website, where appropriate.

Note that access to a computer with a network connection (and SLU VPN for off-campus students) is necessary for this course.

Important Dates

Event/Action Date
First Class Meeting 2023-01-18
Last Day to Add/Drop 2023-01-26
Exam 1 2023-03-01
No Class (Spring Break) 2023-03-20/22
Last Day to Request Pass/Fail 2023-03-31
Last Day to Withdraw 2023-04-07
Exam 2 2023-04-26
Last Day of Class 2023-05-03
Final Exam Period 2023-05-10 (1:30–4:30 PM)

Course Overview and Goals

From the course catalog: Examines the challenge of creating reliable, maintainable software in teams. Introduces modern tools and strategies for design, version control, testing, debugging, and documentation.

In your other computer science courses, you have learned how to write code and have developed an understanding of the technical underpinnings of computational systems. Successful software projects, however, require more than just technical expertise. This course focuses on many of the aspects of development other than coding.

Figuring out what the client wants, collaborating in a team, managing complexity, mitigating risks, staying on time and budget, communicating design and implementation decisions, and maintaining a project over time are equally important topics that often have a significant human component. This course explores these issues broadly and covers the fundamentals of modern software engineering and analysis.

At the end of this course, you will be able to:

  1. Manage data and coordinate tasks using a revision control system.
  2. Use automation and scripting to increase your productivity.
  3. Develop tests both manually and automatically to assess the quality of a software project.
  4. Systematically report and investigate defects in a software project.
  5. Differentiate common software design practices and processes.
  6. Criticize and develop recommendations for historic and present-day software deployments.

Course Topics

As described in the course goals, topics in this course focus on many of the non-coding aspects of the software development process. We will focus on both the development soft skills and also some traditional software engineering topics. A rough ordering of topics is presented below, but is subject to change. The lectures page maintains a detailed description of topics covered so far in class.

  • Command-Line Proficiency
    • Linux basics and shell environments
    • Common utilities
    • Scripting
    • Editors
  • Version Control Systems
    • Commits
    • Branching
    • Merging
    • Pull requests
  • Quality Assurance (testing)
    • Metrics and measurments
    • Test Generation
    • CI/CD
  • Software Defects (bugs)
    • Defect reporting
    • Fault localization
  • Software Design
    • Processes and risk
    • Requirements and specification
    • Designing for maintainability
    • Patterns and anti-patterns
    • Ethics and global computing

Course Format

This course is being offered in a fully-synchronous format.

Weekly Lectures

Each week, there will be synchronous lectures during our scheduled course time. During these lectures, we will explore the topics covered by this course and develop the skills described in the learning goals section. Please review the attendance policy below for expectations about attending these lectures.

Lectures will be recorded and available on Canvas for students wishing to review material covered in this course.

Homework Assignments

Throughout the semester, you will have several different kinds of homework assignments to complete. Homework will be listed on the Lectures page of this site. Each assignment will also indicate which platform you should use for submitting your work.

Reading Quizzes

Readings will be assigned on a class-by-class basis. There will be a short quiz associated with each reading assigned for class. The purpose of these quizzes is to help students retain information for quick recall while completing homework assignments and to help maintain a steady pace of material during class meetings.

Quizzes will be available online via Gradescope and must be completed prior to the start of each class meeting (except for exams or as otherwise announced). There is no limit on the number of times a student may take a reading quiz before the deadline. Excluding special circumstances, reading quizzes may not be taken after the deadline has passed.

Written Summaries

When a guest visits class or we perform a case study of a software deployment (disaster), you will be asked to write a brief summary. Summaries should be approximately one page in length. We will discuss expectations with more detail in class.

You will submit your summaries using Gradescope (linked through Canvas).

Exercises and Projects

Throughout the semester, you will be completing various exercises and projects that help you practice the topics we cover. Exercises will typically be brief activities to give you a little more practice while projects may require several days' time commitment. Several assignments will require software to run for a long time (possibly days). Thus, it is recommended that you start assignments early.

Exercises and projects will be submitted using Gradescope (linked through Canvas).

Exams

There will be two (2), 90 minute exams to check your mastery of tools and concepts in this class. Content for the exams may come from lecture, readings, and homework assignments and is cumulative.

Some of these exams may require the use of a computer. If a student is unable to provide their own computer, please notify me 48 hours prior to the exam, and I will arrange for a loner machine. Make-up exams will not be given for absences unless approved by the instructor in extreme circumstances.

Note that there is no final exam for this course.

Final Presentation

In lieux of a final exam, there will be group presentations during the final exam period. The purpose of these presentations are for students to explore a topic covered in—or related to—class and share their findings with peers.

More details about these final presentations will be provided as the semester progresses.

Attendance

Students are expected to attend each class meeting. Absences will leave holes in your understanding of course concepts. If you must miss a class, you are expected to make up the material on your own time before the next class. You are welcome to attend student hours if you have specific questions about the material you missed, but you will not receive any help if you ask, "what did I miss?" during student hours.

I do my best to post resources from class online (slides, audio recordings, etc.), but I write a significant amount on the board. This means you will need to review notes from a peer or rewatch the video recordings. Should you become unable to attend class (e.g., you become sick), please email me as soon as possible.

Grading

Final grades are based off of a cumulative point system. That means, for example, that 1 point from a homework assignment is equivalent to 1 point from a written summary.

Your final grade will be calculated as follows. First, the percent of total possible points your eceived is calculated. Then, this percentage is mapped to a numeric grade on the 4.00 scale (see below). Note that I do not guarantee any particular rounding scheme for this calculation.

Grade Max Min
4.0010096
3.759593
3.509290
3.258987
3.008683
2.758280
2.507976
2.257673
2.007270
1.756967
1.506664
1.256362
1.006160
0.00590

Regrading Policy

Requests for an assignment regrade must be made in person to the instructor within one week of the assignment being returned to the student and by the final day of classes. Any requests submitted after this may be done at my discretion. I reserve the right to regrade the entire assignment, which may result in either an increase or a decrease in your grade. This is not intended to scare off students, but to avoid frivolous requests.

Examples of appropriate reasons for requesting a regrade include:

  • You believe your answer to a question matches the answer on the key.
  • Your answer is different from the key, but is also correct.
  • There is in error in the summation of points.

Examples of inappropriate reasons for requesting a regrade include:

  • Your programming assignment works on your computer but not the grading server.
  • Most of what you wrote on an assignment was correct, but you want more partial credit.
  • You are one point away from an 3.75 and are trying to get extra points.

Electronics Policy

Students will need a computer with an internet connection to participate in this course. If you do not have access to a reliable computer, please contact me as soon as possible. There may be resources available to help.

Students are expected to remain on task during synchronous activities (no web browsing, social media usage, etc.), as per the professionalism policy. If you have any concerns about this request, please contact me outside of class, and we will work together to find an appropriate solution.

Generally speaking, I encourage taking notes by hand. At least one recent study found that students who took notes longhand remembered more and had a deeper understanding of the material. Rather than using slides, I typically take notes on the board, which will help you keep up if you are taking notes by hand.

Academic Integrity and Professionalism

As noted in the Academic Honor Code in the Student Handbook, "all students at St. Lawrence University are bound by honor to maintain the highest level of academic integrity." Please review the handbook for general guidelines. In particular, you should only be turning in your own work. You are expected to abide by the additional policies listed below. It is my responsibility to report violations of these policies to the Dean.

Students are also expected to act in a professional manner for the duration of the course. This includes (but is not limited to): staying on task during lectures, being respectful of others, avoiding extra use of electronics in class, and promptness for class and deadlines. Unprofessional behavior will result in a reduction of the student's final grade.

Assignment Policies

In addition to the general policies described in the Student Handbook, you are expected to follow the following policies, which are specific to this course.

Late Work

Unless otherwise noted (e.g., reading quizzes) or discussed, you must turn in your work within one week of the due date to receive credit. If you find yourself in a situation where this might not be possible, please contact the instructor as soon as possible.

Collaboration

Unless otherwise noted, you must complete the assignments in this course on your own.

You may discuss the assignments with your classmates, but you may not share code or written text. You may only submit work that you have personally written and understood. Always make a note in your code of your peers with whom you discussed an assignment

For certain assignments, you will be working in groups. Teamwork imposes burdens of communication and coordination, but has the benefits of more thoughtful designs, cleaner programs, and (sometimes) higher bandwidth. Team programming is also the norm in the professional world.

Students on a team are expected to participate equally in the effort and to be thoroughly familiar with all aspects of the joint work. All members bear full responsibility for the completion of projects. Teams turn in one solution for each project. If a partnership is not going well, the instructor will help to negotiate new partnerships. Teams may not be dissolved in the middle of an assignment without instructor permission. If the instructor believes that there is unequal contribution to a project, students may be asked to schedule a meeting to discuss their work.

Resources

You may consult your class notes and the assigned reading materials to help with your assignments. You may also reference web resources (please read below about citations). Note, however, that you may not submit a third party tool that performs the tasks specified in a given assignment or text that you have not written (unless you are given explicit permission).

You should know that fairly sophisticated plagiarism detection software will be used on the assignments. For more details, see the Academic Integrity and Professionalism section.

I will be available to answer questions during student hours. If you would like help, prepare specific questions. I will not help you write your code or answers from scratch (part of the learning process is experimentation), but I am more than happy to provide guidance if you run into trouble.

Citations

For all assignments, you must submit a file citing all of the resources (excluding class notes and assigned readings) you used to complete the assignment. This includes (but is not limited to) conversations with peers, web resources, and additional books. Failure to appropriately cite resources will be considered a breach of the honor policy and will be dealt with as described in this document. If, at any point, you are unsure about the citation policy, ask. Your grade is not affected by the number of resources you cite; I will not be impressed by low or high citation counts. Use the resources you need to complete the assignments!

In addition to following the practice of academic honesty, the purpose of these citations is to help you find resources when you look back at your work. If you were confused by something before, it's likely you might be confused by it again later.

Best Practices

When it comes to academic integrity and professionalism, it's best to ask questions if you are unsure. It has been my experience that most violations are acts of desperation or misunderstanding rather than ill will. I would rather you ask for help or clarification than commit an act of academic dishonesty.

As a general rule of thumb, when you are talking to someone (other than the instructor or partner) about work in this class, close all code that you are working on. If you cannot look at your code (or others' code!) while you are discussing content, it becomes significantly more difficult to violate these policies.

Mental Health and Wellbeing

St. Lawrence University is committed to advancing the mental health and wellbeing of its students. If you or someone you know is feeling overwhelmed, depressed, and/or in need of support, services are available.

For help, contact the Diana B. Torrey '82 Health and Counseling Center at (315) 229-5392 Monday through Friday from 8:30 AM–4:30 PM. After hours, call Campus Safety at (315) 229-5555 to speak with the after-hours crisis counselor. The nation-wide 24/7 crisis counselor service can be reached by calling (315) 229-1914.

For more details, visit https://www.stlawu.edu/health-and-counseling-services.

Accommodations

Student Accessibility Services

Your experience in this class is important to me. It is the policy and practice of St. Lawrence University to create inclusive and accessible learning environments consistent with federal and state law. If you have already established accommodations with the Student Accessibility Services Office, please meet with them to activate your accommodations so we can discuss how they will be implemented in this course.

If you have not yet established services through the Student Accessibility Services Office but have a temporary health condition or permanent disability that requires accommodations (conditions include but not limited to; mental health, attention-related, learning, vision, hearing, physical or health impacts), please contact the Student Accessibility Services Office directly to set up a meeting to discuss establishing with their office. The Student Accessibility Services Office will work with you on the interactive process that establishes reasonable accommodations.

Color Vision Deficiency

If you are Color-Vision Deficient, the Student Accessibility Services office has on loan glasses for students who are color vision deficient. Please contact the office to make an appointment.

For more specific information about setting up an appointment with Student Accessibility Services please see the options listed below:

Diversity and Equity Statement

As indicated by the University's Statement on Diversity and the student handbook, we are committed to treating students fairly and with dignity regardless of age, color, creed, disability, marital status, national origin or ancestry, race, religion, sex (including gender identity and gender expression), sexual orientation, and/or veteran status.

It is my intent that students from all diverse backgrounds and perspectives be well served by this course, that students' learning needs be addressed both in and out of class, and that the diversity that students bring to this class be viewed as a resource, strength and benefit. Should you have any concerns, problems, or suggestions, please do not hesitate to contact me. I strive to make my classrooms safe spaces for learning.

Please also feel free to talk to me about events that happen outside my classroom. If you do not feel comfortable talking to me, there are many other resources available to you on campus, including those on this list of on-campus resources: https://www.stlawu.edu/diversity-and-inclusion/campus-resources.

You can report a bias incident here: https://www.stlawu.edu/diversity-and-inclusion/bias-reporting.

PQRC

The Peterson Quantitative Resource Center (PQRC) offers free, no appointment necessary peer tutoring across a range of courses with quantitative content. The PQRC student staff of mentors is trained to assist students to develop and to improve their quantitative skills and understanding. More information about the PQRC's current hours and modes of operation can be found at the PQRC webpage: www.stlawu.edu/pqrc.

Please note that this is an upper level course. As such, the PQRC staff will not be in a position to support all of the material in this class.

Research

Your class work might be used for research purposes. For example, we may use anonymized student assignments to design algorithms or build tools to help programmers. Any student who wishes to opt out can contact the instructor to do so up to seven days after final grades have been issued. This has no impact on your grade in any manner.

Right to Revise

This is a "living syllabus". Therefore, its contents may be changed throughout the course of the semester to address changing needs. I will do my best to notify students of changes; however, it is up to the student to monitor this page for any changes. Final authority on any decision in this course rests with the instructor (i.e., Kevin Angstadt), not with this document.

Many ideas for this class were borrowed from similar classes taught at The University of Michigan, Carnegie Mellon University, and St. Lawrence University.