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


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