Course Syllabus
Instructor: Nabil Makarem
Email: nabil@cs.utah.edu
Office: MEB 3124
Office Hours: Tuesday, Thursday 12:00 pm - 1:00 pm or by appointment.
Lectures: Tuesday, Thursday, 9:00 - 10:20 AM.
Location: MEB 3255
Lab: 10.40 am to 12 pm.
Lab locations: Split between MEB 3255 and 3105.
Class Zoom Link: N/A
Mode: In-person - I will not be recording the lectures unless specifically requested by a student who has a valid reason for not being able to attend class. If you can not make it to class, reach out to me so that I record that particular lecture.
Important dates
Midterm is on Thursday, February 27, 2025, during the class meeting
Presentation for the teamwork assignment is on Tuesday, April 22, 2025, during the class meeting.
Teaching Assistants
Aparna Gudivada (Github user: aparnagudivada)
Help hours:
Tuesday, Thursday 12:00 pm - 2:00 pm
Wednesday 11:30 am - 1:30 pm
Alex Yang (Github user: xxsyang)
Help hours:
Monday 12:00 pm - 2:00 pm
Tuesday, Thursday 2:00 pm - 4:00 pm
Course Description
This course provides an introduction to software tools that enable programmers to become more effective and productive at writing quality code. The students will undertake a project guided by a set of several assignments. The project will reinforce PL concepts and will involve software tools that include but not limited to source control, documentation, debugging, build automation, testing, profiling, and optimization. Students will use C++ to conduct their work. Students will complete extensive programming assignments and labs that require the implementation and testing of these concepts.
Course Structure
Plan to be in class from 9:00 AM to approximately 10:20 AM every Tuesday and Thursday, and stick around until 12.00 pm if you want to do the labs with our help. Some lectures may run longer than 10:20 am, so prepare accordingly.
There will be 1-2 assignments per week, and some labs throughout the semester. We will use peer reviewing of homework solutions, which means that students will look at and comment on each other's code.
Your grade is based on exams, quizzes, completing the running project, the labs, reading assignments, and participating in polls and peer code reviews during class meetings. The purpose of code review is discuss your code with the instructor/TA and the students. Individual code reviews after the due date is not accepted. Online code review is only accepted in case of emergencies and during the code review day after acquiring permission from your professor.
Prerequisites
Students are expected to have a working knowledge of C++.
Learning outcomes
The expected outcomes after completing this course are as follows:
- Students will gain knowledge of various software design paradigms
- Students will acquire advanced knowledge and application of teamwork methodologies in software engineering
- Students will learn the state of the art of various software tools.
- Students will be able to build industrial and commercial software systems from scratch with user guides and documentation.
- Students will find and resolve bugs and problems in computing systems
Recommended Textbook
The recommended course textbook is Code Complete, second edition
Links to an external site.. I will assign recommended readings from this textbook, but it is not required for you to have this book. There are plenty of materials available online on the topics covered in this course, but you will have to search on your own a little bit.
Grading
Grades in this course will be determined by:
- 60% Project / Assignments
- 20% midterm
- 7% Labs
- 8% Quizzes
- 5% Participation / Polls
The specifications of these assignments will be posted on Canvas, including their due date. You will hand in your programs through Canvas and Git.
Partial credit may be given for incorrect programs, but it must be clear that a strong attempt was made. If your program does not compile or run, no credit will be given. Programs will be graded on readability, comments, and design of the code, as well as correctness in execution.
You may request a regrade of your assignment within one week of receiving grades by contacting the TA who graded your assignment - Regrading requests are only accepted when grades are unfairly distributed/deducted/missing for any part.
The letter grading policy is as follows:
87-89 B+ | 77-79 C+ | 67-69 D+ | ||
93-100 A | 83-86 B | 73-76 C | 63-66 D | 0-59 E |
90-92 A- | 80-82 B- | 70-72 C- | 60-62 D- |
I do, however, reserve the right to adjust this scale if need be.
Late Policy
Late work will not be accepted without prior permission, and this is how we will grade late submissions: 10% off per day for the first 3 days. To submit after that, you'll need to communicate with me, and we'll try to come up with a deadline by which you could earn up to 70% on the assignment, otherwise you'll receive a grade of 0. Reach out to me if there are circumstances that prevent you from doing your best work and I'll try to make appropriate accommodations. The earlier you can let me know, the better.
Getting Help
Every student will get stuck sooner or later. When you do, feel free to ask for help in person or through the class website. We are happy to help. Please make use of our office hours whenever possible.
The Slack Channel is where you should post simple questions for other students. The only rule is that you are not allowed to discuss specific solutions to upcoming homework.
For emails directed to me personally, I will read it quickly and respond as soon as possible. Email me at the cs.utah.edu email address listed above.
Cheating Policy
Students are encouraged to discuss assignments and laboratory exercises with classmates since that is often a good way to learn the material. However, all students must independently write their own code and write-ups. High-level discussions of solutions are allowed, but directly basing your work on another student's code or write-up is considered cheating. Students should not copy solutions from other students, should not copy solutions from the internet, should not request solutions on online forums (e.g., Stack Overflow). In addition, students should always make sure to acknowledge appropriately any outside materials they used or rely on. This includes papers, books, websites, personal communication, etc. For full details, refer to the official SoC academic misconduct policy: https://www.cs.utah.edu/undergraduate/current-students/policy-statement-on-academic-misconduct
Links to an external site.. Cheating is treated very seriously, and submissions are routinely checked by the course staff for signs of unauthorized collaboration.
AI Generative
It is expected that students adhere to University of Utah policies regarding academic honesty, including but not limited to refraining from cheating, plagiarizing, misrepresenting one's work, and/or inappropriately collaborating. This includes the use of generative artificial intelligence (AI) tools without citation, documentation, or authorization. Students are expected to adhere to the prescribed professional and ethical standards of the profession/discipline for which they are preparing. Any student who engages in academic dishonesty or who violates the professional and ethical standards for their profession/discipline may be subject to academic sanctions as per the University of Utah’s Student Code: https://regulations.utah.edu/academics/6-410.php
Links to an external site.
University Safety Statement. The University of Utah values the safety of all campus community members. To report suspicious activity or to request a courtesy escort, call campus police at 801-585-COPS (801-585-2677). You will receive important emergency alerts and safety messages regarding campus safety via text message. For more information regarding safety and to view available training resources, including helpful videos, visit safeu.utah.edu.
Addressing Sexual Misconduct. Title IX makes it clear that violence and harassment based on sex and gender (which Includes sexual orientation and gender identity/expression) is a civil rights offense subject to the same kinds of accountability and the same kinds of support applied to offenses against other protected categories such as race, national origin, color, religion, age, status as a person with a disability, veteran’s status or genetic information. If you or someone you know has been harassed or assaulted, you are encouraged to report it to the Title IX Coordinator in the Office of Equal Opportunity and Affirmative Action, 135 Park Building, 801-581-8365, or the Office of the Dean of Students, 270 Union Building, 801-581-7066. For support and confidential consultation, contact the Center for Student Wellness, 426 SSB, 801-581-7776. To report to the police, contact the Department of Public Safety, 801-585-2677(COPS).
Student Mental Health Resources
- Rates of burnout, anxiety, depression, isolation, and loneliness have noticeably increased during the pandemic. If you need help, reach out for campus mental health resources Links to an external site., including free counseling, trainings and other support.
- Consider participating in a Mental Health First Aid Links to an external site. or other wellness-themed Links to an external site.training provided by our Center for Student Wellness and sharing these opportunities with your peers, teaching assistants and department colleagues
Student Support Services (TRIO)
TRIO federal programs are targeted to serve and assist low-income individuals, first-generation college students, and individuals with disabilities.
Student Support Services (SSS) is a TRIO program for current or incoming undergraduate university students who are seeking their first bachelor's degree and need academic assistance and other services to be successful at the University of Utah.
For more information about what support they provide, a list of ongoing events, and links to other resources, view their website: trio.utah.edu
Links to an external site.
Students with Children
Our mission is to support and coordinate information, program development and services that enhance family resources as well as the availability, affordability and quality of child care for University students, faculty and staff.
For more information about what support they provide, a list of ongoing events, and links to other resources, view their website: childcare.utah.edu
Links to an external site.
Students with Disabilities
The Center for Disability & Access is dedicated to serving students with disabilities by providing the opportunity for success and equal access at the University of Utah. They also strive to create an inclusive, safe, and respectful environment.
For more information about what support they provide and links to other resources, view their website: disability.utah.edu
Links to an external site.
English as a Second/Additional Language (ESL) Students
If you are an English language learner, there are several resources on campus available to help you develop your English writing and language skills. For more information about what support they provide and links to other resources, view their website: writingcenter.utah.edu
Links to an external site.
Veterans & Military Students
The mission of the Veterans Support Center is to improve and enhance the individual and academic success of veterans, service members, and their family members who attend the university; to help them receive the benefits they earned; and to serve as a liaison between the student veteran community and the university.
For more information about what support they provide, a list of ongoing events, and links to other resources, view their website: veteranscenter.utah.edu
Links to an external site.
Other Student Groups at the U
To learn more about some of the other resource groups available at the U, check out:
getinvolved.utah.edu/ Links to an external site.
studentsuccess.utah.edu/resources/student-support Links to an external site.
Course Summary:
Date | Details | Due |
---|---|---|
Tue Jan 9, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Thu Jan 11, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Tue Jan 16, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Thu Jan 18, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Tue Jan 23, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Thu Jan 25, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Tue Jan 30, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Thu Feb 1, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Tue Feb 6, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Thu Feb 8, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Tue Feb 13, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Thu Feb 15, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Tue Feb 20, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Thu Feb 22, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Tue Feb 27, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Thu Feb 29, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Tue Mar 5, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Thu Mar 7, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Tue Mar 12, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Thu Mar 14, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Tue Mar 19, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Thu Mar 21, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Tue Mar 26, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Thu Mar 28, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Tue Apr 2, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Thu Apr 4, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Tue Apr 9, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Thu Apr 11, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Tue Apr 16, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Thu Apr 18, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Tue Apr 23, 2024 | Calendar Event CS 6015-001 Spring 2024 MSD: Software Engineering | 9am to 10:30am |
Tue Jan 7, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment Lab 1: Makefiles | due by 11:59pm | |
Thu Jan 9, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Tue Jan 14, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment Project Phase 1: MSDscript Command Line | due by 11:55pm | |
Thu Jan 16, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Tue Jan 21, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment Code Complete chapter 7: High Quality Routines | due by 9:30am | |
Quiz Quiz 1 | due by 10:45am | |
Assignment Project Phase 2: Expression Classes | due by 11:55pm | |
Thu Jan 23, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment Lab 2: Debugging | due by 11:59pm | |
Tue Jan 28, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment Project Phase 3: Interpret | due by 11:59pm | |
Thu Jan 30, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment Lab 3: Code Coverage | due by 11:59pm | |
Mon Feb 3, 2025 | Assignment Code Complete chapter 8: Defensive Programming | due by 11:59pm |
Tue Feb 4, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment Project Phase 4: Printing | due by 11:59pm | |
Wed Feb 5, 2025 | Assignment Lab 4: Documentation | due by 11:59pm |
Thu Feb 6, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment
Lab 4: Documentation
(1 student)
|
due by 11:59pm | |
Tue Feb 11, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Quiz Quiz 2 | due by 10:45am | |
Assignment Project Phase 5: Let Binding | due by 11:59pm | |
Thu Feb 13, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment Lab 5: Creating Libraries | due by 11:59pm | |
Fri Feb 14, 2025 | Assignment Code Complete chapter 24: Refactoring | due by 11:59pm |
Tue Feb 18, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment
Lab 5: Creating Libraries
(1 student)
|
due by 11:59pm | |
Quiz
Quiz 2
(1 student)
|
due by 11:59pm | |
Thu Feb 20, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment Project Phase 6: Parse | due by 11:59pm | |
Tue Feb 25, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment Project Phase 7: Test Generation | due by 11:59pm | |
Wed Feb 26, 2025 |
Assignment
Project Phase 7: Test Generation
(1 student)
|
due by 11:59pm |
Thu Feb 27, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment Midterm | due by 11am | |
Mon Mar 3, 2025 |
Assignment
Project Phase 7: Test Generation
(4 students)
|
due by 11:59pm |
Tue Mar 4, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment Project Phase 8: Refactoring for Values | due by 11:59pm | |
Thu Mar 6, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment
Project Phase 8: Refactoring for Values
(2 students)
|
due by 11:59pm | |
Fri Mar 7, 2025 | Quiz Conditionals (Test your knowledge) | due by 11pm |
Assignment Project Phase 9: Booleans and Conditionals | due by 11:59pm | |
Sat Mar 8, 2025 |
Quiz
Conditionals (Test your knowledge)
(1 student)
|
due by 11:59pm |
Tue Mar 11, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Wed Mar 12, 2025 |
Assignment
Project Phase 9: Booleans and Conditionals
(1 student)
|
due by 11:59pm |
Thu Mar 13, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Tue Mar 18, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment
Project Phase 9: Booleans and Conditionals
(1 student)
|
due by 11:59pm | |
Assignment Fix undefined behavior in MSDScript | due by 11:59pm | |
Thu Mar 20, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment Lab 6: Profiling | due by 11:59pm | |
Sat Mar 22, 2025 | Quiz Functions (Test your knowledge) | due by 11pm |
Assignment Code Complete chapter 25: Code-Tuning Strategies | due by 11:59pm | |
Assignment Code Complete chapter 26: Code-Tuning Techniques | due by 11:59pm | |
Sun Mar 23, 2025 |
Quiz
Functions (Test your knowledge)
(2 students)
|
due by 11:59pm |
Tue Mar 25, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment Project Phase 10: Functions | due by 11:59pm | |
Wed Mar 26, 2025 |
Assignment
Project Phase 10: Functions
(1 student)
|
due by 11:59pm |
Thu Mar 27, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Tue Apr 1, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment Project Phase 11: Smart Pointers - shared_ptr | due by 11:59pm | |
Thu Apr 3, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Tue Apr 8, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment Project Phase 12: Environments | due by 11:59pm | |
Thu Apr 10, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment Assignment 1: Qt | due by 11:59pm | |
Tue Apr 15, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment Assignment 2: Qt | due by 11:59pm | |
Thu Apr 17, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Tue Apr 22, 2025 | Calendar Event CS 6015 Spring 2025: Software Engineering | 9am to 10:30am |
Assignment Assignment 3 (Teamwork): Qt Game | due by 11:59pm | |
Assignment Participation 1 | ||
Assignment Participation 10 | ||
Assignment Participation 11 | ||
Assignment Participation 2 | ||
Assignment Participation 3 | ||
Assignment Participation 4 | ||
Assignment Participation 5 | ||
Assignment Participation 6 | ||
Assignment Participation 7 | ||
Assignment Participation 8 | ||
Assignment Participation 9 |