Course Syllabus

CS3500 Syllabus

Course Information

 

Instructor

Habtamu Minassie Aycheh, PhD

Department: Electrical and Computer Engineering

Email: habtamu.aycheh@utah.edu

Office: U759

Class meetings

Monday and Wednesday 1:00pm - 2:20pm in room U303

LAB Session

 Friday  1:00pm - 1:50pm in room U513

Office hours

Monday: 2:30pm ~ 3:30pm or   by Appointment

Important Dates

Midterm is Wednesday October 15,2025 during the class meeting.

Final Exam is Monday December 8, 2025 1:00pm – 3:00 pm, Room U303

 Course Description

Large software systems are some of the most complex artifacts ever created. The field of software engineering encompasses the study and application of effective tools and techniques for organizing the efforts of teams of people towards designing, developing, deploying, and maintaining software systems. CS 3500 is an introduction to software engineering. Although you will learn about all the steps involved in creating a system, we will focus primarily on the software construction step by building on the programming background that you acquired from CS 1410 and CS 2420.  In CS 3500, we will bridge the gap between introductory programming and full-blown software engineering.

Learning  Objectives

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

  1. Design and implement large and complex software systems (including concurrent software) through the use of libraries (both standard and custom), and modern software development tools (such as debuggers, profilers, and revision control systems)
  2. Perform input validation and error handling, as well as employ advanced testing principles and tools to systematically evaluate software
  3. Apply the model-view-controller pattern and event handling fundamentals to create a graphical user interface
  4. Exercise the client-server model and high-level networking APIs to build a networked software system
  5. Operate a modern relational database to define relations, as well as store and retrieve data
  6. Effectively participate in the collaborative nature of software development

Course Materials

The class website is the Canvas course available through CIS. It will be updated throughout the semester with the class schedule, lecture notes, lab. exercises, assignment specifications, and much more. Students are required to check their email and Canvas regularly until final grades are posted. 

Reading: The class web page contains a weekly topic list that will show the lecture topic and required readings/HackerRank challenges/programming assignments/labs/etc.

Textbook:  There is no text that you have to buy. 

GitHub: Your code for this class will be stored on a private Github repository owned by thecourse staff. Your repository may be deleted after the end of the semester. Make sure you backup your work if you want to keep it after the end of the semester

Hardware/Software: We will be using the most recent version of Visual Studio Community 2022.  You should have this installed before the first lab of the semester.  Each student will need a computer capable of running Visual Studio 2022.

Lab Sections: You should attend lab sections each week. In the sections you will get hands-on practice with tools and techniques under the supervision of the teaching assistants. The lab activities will be posted on the class web page. If you do not complete an activity during the lab, you should complete it shortly afterward. Lab activities may be graded to encourage participation.

Student Evaluation

The instructions for each assignment and its due date will be posted on the class website roughly one week before it must be submitted. Assignments are submitted online via the submission tool located beneath the instructions for each assignment. It is the student’s responsibility to ensure the successful and timely submission of each programming assignment — start early and follow the instructions carefully. Corrupted or missing files will not be grounds for extensions. Double-check your submissions, and save a digital copy of all of your work. 

Tests will consist of midterm and a final exam all given in-person in the lecture hall .  No exam may be taken at a different time for any reason other than a documented medical emergency or official University of Utah excused activities.  

Students in labs generally work through online quizzes with the aid of the lab TAs. You need to submit lab progress reports for each lab sessions . Labs will focus on additional material that is helpful for completing assignments. Additionally, labs are very beneficial for reviewing material covered in class .Attendance is expected.

A weighted average will be calculated based on:

  • 40% : programming assignments
  • 15% : class/lab participation, HackerRank performance, and other quizzes
  • 20% : your midterm exam grade
  • 25% : your final exam grade

Letter Grades

Your weighted, cumulative course percentage score is turned into letter grades using the following scheme:

93 ≤ X ≤ 100 A
90 ≤ X < 93 A-
87 ≤ X < 90 B+
83 ≤ X < 87 B
80 ≤ X < 83 B-
77 ≤ X < 80 C+
73 ≤ X < 77 C
70 ≤ X < 73 C-
67 ≤ X < 70 D+
63 ≤ X < 67 D
60 ≤ X < 63 D-
X < 60 E

Course Guidelines

Each assignment's deadline is followed by a two-day late period. There is a one-day grace period for late assignments. The second day Late submissions are penalized 10 % deduction. No assignments will be accepted more than 2 days (48 hours) late, at which a  0 point will be assigned. Longer term issues should be discussed with the instructors.

Likewise, laboratory work will not be accepted late, except in the case of a documented medical emergency. 

Regrades

Students desiring to appeal a score on an assignment, lab exercise, quiz, test, or final exam must  request no later than one week after the score is published. We reserve the right to regrade the entire assignment when a regrade request is made. Regrades should be listed on GradeScope for programming assignments.

Students may end up missing a deadline or a lab session for a reason that is not granted an exception (generally, documented medical reasons or official University activities). Therefore, to allow for such an occurrence, the lowest score earned on assignments will be dropped from the record of each student at the end of the semester. These dropped score is automatically applied. No mid or final exam scores are dropped

Students may use their own computers for completing assignments and taking Canvas quizzes; however, broken tools or computers, or network connectivity issues are not sufficient basis for a deadline extension.  Plan ahead and use a campus lab computer if your own is not working.

Laptop Computers in Lecture: Students should plan to take written notes during class.  Trying to keep up with “programming” is problematic.  Further, the lecture slides and example codes will be posted as appropriate.  If you find you must use your computer during class to take notes, please move to the back rows of the classroom in order to limit the disruption to other students.

Pair Programming: Some of the work in this class will be completed in pairs with another student. When pair work is required, students must adhere to the techniques of pair programming. Partners are required to contribute equally to the work.

Cooperation vs. Cheating

The purpose of your degree in CE is to learn how to be a computer scientist .  This involves the hard work of problem solving, algorithm development, software engineering, and programming.   Once you earn a degree you will be handsomely rewarded for your abilities.

To this end you will take a variety of courses, but more importantly you will have the opportunity to learn and grow your skills.  To this end, you are encouraged to make use of all the avenues for success, including: Lecture, TAs/professor hours, readings, homework, counseling, tutoring, recreation, etc.

Along this path you are encouraged to work with, learn from (and teach) others.  You must plot your own path toward learning.  If this means discussing a problem in great detail with your peers, you are welcome to do it.  What you are not allowed to do is to take someone else’s understanding and present it as your own.  This is often done by directly copying someone’s work.  Submitting work that you did not originate and calling it your own is considered academic misconduct in this course.  The sanction for this act is a failing grade and a strike toward your CE major.

For more information, see the class web page on Academic Behavior Policies.

Getting Help

Class and TA  office hours will be arranged during which you may seek help with your specific problems. Do not hesitate to make heavy use of this service. Do not, however, expect the TA to do your work for you. 

What is expected of you:

  1. You should have a well thought out question for the TA.  If necessary, the TAs will ask you to write down your question beforehand.
  2. If the problem is conceptual, you should describe your high level understanding of the problem, and then what you don't understand.
  3. If the problem is technical, you should have your debugger open and pointing at the stopped program, or if not a programming problem, you should have Google open and pointing at a query describing your problem.
  4. Before asking the TA for help, you should commit your current status to the revision control system.  After you have received help and found a solution, you should kompare the new and previous versions of your code and identify the solution path.

What the TAs will do:

  1. The job of the TA is to understand your issue and provide you guidance in solving the issue.  The TA is not there to solve the issue, but to help you DISCOVER the PROCESS for SOLVING future problems!
  2. The TAs will often point you to class readings or web resources, ask you to refer to your notes, ask you to detail what steps you have made to resolve this problem on your own, etc.

More advice:

There are several ways to help avoid these long waits.

  1. Make sure you have read the assignment, and have written down a short summary of what is to be achieved and how you think you can go about it. 
  2. Present your summary to the TA to help explain what you "know" and what you "do not know". 
  3. Feel free to talk with your peers about general programming ideas, syntax, etc. Please refer to the section on ethics for more information on what is/is not acceptable in this manner. 
  4. Finally, and perhaps most effectively, work on the assignment ahead of time and complete it before the due date! You will find that the TAs are often all alone in the lab on the several days prior to the due date.

 Work Plan:

You should establish a “work plan” which basically means, schedule your week the same you would do in the “real world”.  Schedule your classes, your homework time, your study time, your play time.  Additionally, break up your work across the entire week.  For example: schedule seven 2-hour blocks vs. two 7-hour blocks.

  1. The Americans with Disabilities Act. The University of Utah seeks to provide equal access to its programs, services, and activities for people with disabilities. If you will need accommodations in this class, reasonable prior notice needs to be given to the Center for Disability & Access, https://disability.utah.edu/, +1 -801-581-5020. CDS will work with you and the instructor to make arrangements for accommodations. All written information in this course can be made available in an alternative format with prior notification to the Center for Disability & Access. 

    Given the nature of this course, attendance is required and adjustments  will only be permitted as required by Policy 6-100(III)(O). If you need to seek an ADA accommodation to request an exception to this attendance policy due to a disability, please contact the Center for Disability and Access (CDA). CDA will work with us to determine what, if any, ADA accommodations are reasonable and appropriate. 

    In compliance with ADA requirements, some students may need to record course content. Any recordings of course content are for personal use only, should not be shared, and should not be made publicly available. In addition, recordings should be destroyed at the conclusion of the course.

  2.  University Safety Statement. The University of Utah values the safety of all campus community members. To report suspicious activity, call the Asia Campus Dean of Students Office at 032-626-6014 or the Asia Campus Emergency Contact at 010-8519-6008. 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 https://safeu.utah.edu
  3. 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, 383 South University Street, +1-801-581-8365, or the Asia Campus Office of the Dean of Students, 611 Utah Building, 032-626-6014 or the Asia Campus Emergency Contact at 010-8519-6008.  For support and confidential consultation, contact the Mental Health Counseling Center, 3051-3052 MCB, 032-626-5142 or 032-626-5142. 
  4. Academic Misconduct Statement. 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
  5. Language PolicyThe University of Utah Asia campus is committed to providing and fostering an environment that is safe and free from prohibited discrimination.  The following language policy applies to all academic and administrative units of the University and all members of the University community, including faculty, staff, and students. English is recognized as the official language of instruction, assessment, and curriculum. Except for language classes, where the target language will dominate, per best practices of language pedagogy. In addition, English is the official language for all university administrative and business-related matters.