Syllabus


General Course Info

Title: Foundations of Software Engineering

Term: Fall 2023

Department: Computer Science (COMP)

Course Number: 590-140 (Pilot for 423)

Section: In-person MWF - 4:40pm to 5:30pm

Instructor: Kris Jordan

Undergraduate Teaching Assistants:

  • Adin Zimmerman
  • Ajay Gandecha
  • Audrey Toney
  • Bailey DeSouza
  • Charles Ma
  • David Karash
  • Felipe Yanaga
  • Jade Keegan
  • Jessica Bring
  • Lia Abed
  • Luis Sanchez
  • Madelyn Andrews
  • Matthew Kolsch
  • Megan Ortel
  • Meghan Sun
  • Olivia Wen
  • Sadie Amato
  • Thi Le

Course Description, Target Audience, and Prerequisites

This course introduces students to the fundamentals of Software Engineering. Students gain experience with technical communication, team collaboration, design process, project management methodologies, development and production environment concerns, automation, code review, and so on, with an emphasis on today’s best practices and tools.

The target audience for this course are Undergraduate Computer Science majors seeking experience in the discipline of software engineering.

Pre-requisite Courses: C or better in both COMP301 and COMP211.

Goals

The goal of this course is to prepare you for technical leadership, emphasizing on collaborative designing, implementation, and delivery of human-centered software systems.

  1. Develop healthy habits for lifelong learning in the field through reading, experimentation, self-reflection, and participation in professional communities.
  2. Improve spoken and written technical communications to specific audiences of stakeholders with an emphasis on collaborators.
  3. Practice designing, specifying, constructing, verifying, iterating on, and operating production-grade software systems in pairs and small teams following intentional methodologies.

Textbooks and Resources

The course web page (https://comp423-23f.github.io/) and Canvas are the primary resources for this course. There is no textbook for this course. We will distribute frequent readings, reference material, and tutorials via the course website and Canvas.

Textbooks we will source chapters from, without your needing to purchase any texts, include the following. Each of these books is worth reading in whole and having on your bookshelf as you progress in your software engineering career!

  • The Mythical Man-month, Fred Brooks
  • Code Complete 2nd Edition, Steve McConnell
  • The Pragmatic Programmer, Dave Thomas and Andrew Hunt
  • Clean Code and Clean Agile, Robert Martin
  • A Philosophy of Software Design, John Ousterhout
  • Understanding Comics, Scott McCloud
  • Conceptual Blockbusting, James L Adams

Disclaimer

This is a pilot course being taught for the second semester. The instructor reserves to right to make changes to the syllabus. Any changes will be announced as early as possible. Given the experimental nature of this course, please anticipate changes in the syllabus being far more likely than with established courses of record. Check the course site regularly for updates and announcements!

Modality: In-person

The most valuable resources in this course are lecture and office hours. Both will be held exclusively in-person; remote participation in lecture is not feasible due to the emphasis on groupwork.

Unlike most of the courses in the computer science curriculum, Software Engineering is as much, or more, about interpersonal communication and the methodologies of collaboration as it is about programming and the mastery of neatly defined concepts and skills. You will be working in pairs and teams throughout the semester. Your ability to be an upstanding teammate is critical to your success in this course.

Course Requirements and Policies

You should attend all lectures and check the course page for announcements and updates. You should complete all assignments on time.

Please show up at least five minutes early to lecture so class can begin promptly at its scheduled start time. Please place your bookbag in the basket beneath your seat.

Course Load Expectation

This course is a rigorous introduction to Software Engineering. Communicating with your team mates, reading, designing, self-teaching, and debugging will require significant amounts of time every week. The amount of time you and your team mates spend engaging with course content and projects outside of lecture will significantly impact what you get out of this course. You should expect to spend 3 hours per week on lecture in addition to 9 hours per week outside of lecture working on the course.

We DO NOT recommended taking COMP423 in a semester when you are enrolled in 17 or more credit hours.

Grading Criteria

To do well in this course you must actively participate in lecture, be a professional, responsible, and productive team mate, keep up with the reading, writing, and programming assignments, and produce quality software.

Peer evaluations of each team member’s individual contributions to the final project will be heavily factored into final grade determinations. If you do not equitably contribute as a team mate in pair work on exercises and team work on the final project, which together represent 65% of your course grade, you may fail the course despite succeeding in the other components.

Final grades are calculated with the following weights for each course component:

  • 50% - Project Sprints / Final Project
    • 12.5% for each of 3x Sprints
    • 12.5% for Final Project Presentations and Final Project Hand-in
  • 32% - Homework
    • 16% - Exercises
    • 16% - Readings & Professional Development
  • 18% - Classroom Participation and Assessment
    • 15% - Attendance and In-class Participation
    • 3% - 1x Quiz

Class Attendance Policy

Our course adheres to UNC’s official policies on Attendance, Grading, and Examination.

Each student is permitted to be absent for up to four (4) lecture meetings without any penalty, prior approval, or instructor notification, regardless of absence type (university approved or otherwise). After four missed lectures, absences will count against your in-class activities and participation grade unless they are university approved absences.

Regrade Requests

Regrade requests for quizzes and other manually graded assignments are open for 48 hours following the release of the grade. If you missed any of the points on a given assignment, review your work when grades are posted and understand the marks you missed. This will raise your comprehension and mastery of the material. In the event we grade your work improperly, select the specific question on Gradescope and submit a regrade request. If there are multiple questions, submit one request per question. Do not use regrade requests to ask why something is wrong, come work with us in office hours to understand the problem at hand.

Late policies

All lecture assignments will be due by the end of lecture and handed-in on Gradescope.

All assignments, outside of assessments such as quizzes and the final, will have an 11:59pm deadline on their due date.

Assignments with 11:59pm deadlines will have late periods. When the late period begins, there is a 1-hour grace period in which no penalty is applied. A 15% late penalty will be applied at the end of the semester. The late period for assignments is 48-hours.

Slip Days

To ensure fairness to everyone, as emergencies may arise for anyone, we will drop penalties on up to four late assignments. Priority will go to assignments weighted higher (e.g. exercises ahead of readings). This penalty drop does not impact zeroes, only penalties for assignments handed in late. We expect you to hand everything in!

Grading Scale Breakdown

  • A: 93-100
  • A-: 90-92
  • B+: 87-89
  • B: 83-86
  • B-: 80-82
  • C+: 77-79
  • C: 73-76
  • C-: 70-72
  • D: 60-69
  • F: 59 or below

In cases of fractional points, grades will be rounded up if greater than 0.4999999999…

Final Project Presentations

This course centers around a large final project. In lieu of a final exam, we will still meet on the scheduled day of finals, but each group will give group presentations and demonstrations of their feature work completed in the back half of this semester.

Final Project Licensing Agreement

The final project of this course is to work in a team of four on implementing a feature for an MIT Licensed open source software project that serves the students in the Computer Science Department at UNC-Chapel Hill. The hope for final projects is to select the best implemented, documented, and tested features produced by teams in this course and merge them into the production software’s code base for future UNC-Chapel Hill computer science students to benefit from. As such, the implementation work you and your team does will be subject to a popular open source license, the MIT License https://opensource.org/licenses/MIT. Of course, per the license, any works merged in will record proper attribution and authorship in order.

Honor Code and Collaboration Policy

Software Engineering is as at least as much, but typically more, about collaboration as it is about individual production. This course will emphasize technical collaboration, team work, community building, and leadership. Group work with peer students enrolled in the course and collaboration with course staff is encouraged unless made explicit otherwise (such as on quizzes and individual projects). The most significant graded portion of this course will be a group-based project.

Collaboration on submitted work in this course should cite all collaborators clearly and distinctly.

Any code snippets, derivations, or generated code found or produced through artificial intelligence tools outside of the official documentation for a language, framework, or package, and made use of in your work, should be clearly cited and linked back to with a complete URL. You must understand and be able to explain any code snippet, derivation, or generated code you make use of in your work. For example, you do not need to cite an example usage found in a Python package imported into a project. However, you do need to cite an example usage found in StackOverflow, generated through ChatGPT, Github Co-pilot, or similar sources.

Code Review Test

The instructor reserves the right to, at any time, ask you to submit to a “code review” test with me or a TA. We may ask you to meet to explain any line of code or decision made in your program.

Using code, even if cited, that you do not understand and cannot explain is intellectually dishonest and a lost learning opportunity for you.

Thus, you should be able to comfortably explain the code you hand in for credit. Should you be unable to do so, your grade will be penalized for the assignment in question and you may be taken to honor court depending on the severity of the infraction.

Feedback

If you have suggestions on how to improve the course or just want to leave some positive, encouraging feedback for the TAs or I, please give us feedback. If you make a suggestion we’re able to act on, while we still have time to, we’re more than happy to!

Diversity Statement

The instructor and the undergraduate teaching assistant team value the perspectives of individuals from all backgrounds reflecting the diversity of our students. We broadly define diversity to include race, gender identity, national origin, ethnicity, religion, social class, age, sexual orientation, political background, and physical and learning ability. We strive to make this classroom an inclusive space for all students. Please let us know if there is anything we can do to improve; we appreciate suggestions.

Title IX Resources

Any student who is impacted by discrimination, harassment, interpersonal (relationship) violence, sexual violence, sexual exploitation, or stalking is encouraged to seek resources on campus or in the community. Please contact the Director of Title IX Compliance (Adrienne Allison – ), Report and Response Coordinators in the Equal Opportunity and Compliance Office (), Counseling and Psychological Services (confidential), or the Gender Violence Services Coordinators (; confidential) to discuss your specific needs. Additional resources are available at safe.unc.edu.

Counseling and Psychological Services

CAPS is strongly committed to addressing the mental health needs of a diverse student body through timely access to consultation and connection to clinically appropriate services, whether for short or long-term needs. Go to their website: https://caps.unc.edu/ or visit their facilities on the third floor of the Campus Health Services building for a walk-in evaluation to learn more. (source: Student Safety and Wellness Proposal for EPC, Sep 2018)

Contributor(s): Kris Jordan