Syllabus
Instructor and Course Details
Instructor: Alexander R. Block
Email: arblock [at] uic [dot] edu
Drop-in Office Hours
- Thursdays, 2:00pm - 3:00pm (drop-in hours) or by appointment.
- Location: CDLRC 2404 (drop-in) or 4462 (appointment only).
Course Modality and Schedule: In-person only, CDLRC 2406, 11:00am - 12:15pm, Tuesday & Thursday.
Gradescope: https://www.gradescope.com/courses/1097809
Piazza: https://piazza.com/uic/fall2025/cs402
Course Announcements
Course information will primarily be conveyed using this website (see here) and Piazza. Course discussion will happen on Piazza. All course assignments and grades will be collected and returned through Gradescope. I will also send email notifications to the class with announcements.
You are responsible for checking this website and emails for any and all updates and information regarding the course, including homework assignments and schedule changes. You are also responsible for keeping up to date on Piazza for any corrections and/or clarifications regarding assignments, or other important information.
Communication Expectations
Students are responsible for all information instructors send to your UIC email. Faculty messages should be regularly monitored and read in a timely fashion.
Please use Piazza private messages shared with the instructors (not just the professor or TA by name) if you wish to communicate with us directly. Please only use email for something that explicitly should be kept private only to that person.
Please email me if you face an unexpected situation that may impede your attendance, participation in class and exam sessions, or timely completion of assignments.
Course Information
CS 402 is a joint undergrad/graduate level course. The course is intended to be an applied follow-up course to CS 401. From the UIC course catalogue:
Design, implementation and presentation of algorithms and data structures emphasizing dynamic programming and both exact and heuristic approaches to NP-hard problems; problem solving sessions, programming projects and presentations.
Course Structure. This course will emphasize your skills as a CS student. Crucial to this, in my view, are the following skills:
- Designing and implementing algorithms/data structures to solve problems;
- Presenting these designs and implemenetations to others; and
- Continual improvement of skills.
As such, the aim of the course structure is to help you with these three skills. There will be an emphasis on practice of all of these skills. In order to achieve this, lectures will be sparse and I will try to only present reviews of concepts needed to help solve the problems that will be given in-class and for projects. In my opinion (and many others), students learn best by practicing, practicing, practicing!
Roughly speaking, we will divide up our in-class time as follows.
- Some brief review and/or introduction of materials/problems for the current section.
- Ample in-class time to attempt problems and understand materials.
- Reserved time for in-class presentations of the problems.
For in-class assignments, you will not be evaluated on whether or not you get a solution correctly the first time, but rather how you approach solving a problem, how well you explain and justify your approach and present it to others, and how well you improve over the course of this class. Your soft skills as a computer scientist are just as important as the hard skills (i.e., desigining and implementing), and I will be evaluating you on all such skills and looking for improvement. However, all projects and exams in this course will expect you to find the correct solution to the best of your ability.
You will be allowed to work individually or in groups during our in-class sessions, as well as for projects. It is highly encouraged to work in groups of 2-3 people to help build on each other’s skills. Note that it is easy for an instructor to tell if a single person in a group is doing all the work (or one of three in a larger group is doing no work). All exams will be individual.
Prerequisites: CS 401.
Brief list of topics to be covered (subject to change)
- Sorting
- Hashing
- Dynamic Programming
- Trees
- Graphs
- SAT Solvers (time permitting)
Required and Recommended Course Material: No textbook is required for this course. Lecture will contain overviews of the ideas and concepts needed for the topic at hand, but much of this course is intended for you to practice skills you’ve accumulated thusfar as a student.
When relevant or helpful, I will provide links to free materials to help study topics and concepts in this course. Please keep an eye out for changes to the website with these resources. Office hours and Piazza discussions will also help you greatly during this course.
Course Copyright: Please protect the copyright integrity of all course materials and content. Please do not upload course materials not created by you onto third-party websites or share content with anyone not enrolled in our course.
The purpose of this syllabus is to give students guidance on what may be covered during the semester. I intend to follow the syllabus as closely as possible; however, I also reserve the right to modify, supplements, and/or make changes to the course as needs arise. All such changes will be communicated in advance through in-class annoucnements and in writing via this website and email.
Course Policies and Classroom Expectations
Grading Policies & Point Breakdown
Grades will be curved based on an aggregate course score and are not defined ahead of time. The score cut-offs for A, B, C, etc., will be set after the end of the course.
The course will have the following grade breakdown:
| Task | % of total grade |
|---|---|
| In-class Presentation and Discussion | 20% |
| In-class Reports | 15% |
| Projects | 25% |
| Midterm Exam | 15% |
| Final Exam | 25% |
Final Grade Assignments
My goal is to ensure that the assessment of your learning in this course is comprehensive, fair, and equitable. Your grade in the class will be based on the number of points you earn out of the total number of points possible, and is not based on your rank relative to other students. There are no set limits to the number of grades given (e.g., everyone can get an A if everyone does well).
Under no circumstances will grades be adjusted down (except in cases of course policy violation). You can use this straight grading scale as an indicator of your minimum grade in the course at any time during the course. You should keep track of your own points so that at any time during the semester you may calculate your minimum grade based on the total number of points possible at that particular time. If and when, for any reason, you have concerns about your grade in the course, please email me to schedule a time for you to speak with me so that we can discuss study techniques or alternative strategies to help you.
Regrade Policy
You are allowed to request one single regrade per project/non-final exam. Moreover, with every regrade request, you must submit the following information:
- Which problems you are requesting a regrade for; and
- The exact reason you are requesting a regrade.
I will be strict with this policy to ensure there are no frivolous regrade requests; i.e., do not request a regrade to try and argue for more points. You must have a specific and articulate reason for why you believe something was graded incorrectly. Finally, note that any regrade request can result in a score reduction if additional errors are discovered.
Assignment Late Policy
Each assignment will have a set due date. You may submit assignments late, with a 25% point reduction per day of being late. On the fourth or later day of being late, you will recieve zero points on the assignment, but if you submit the assignment, it will still be graded in order to give you feedback.
In-class Participation
As this class emphasizes many soft skills and in-class participation, it is highly encouraged that you attend class. Much of your grade relies on in-class participation.
You are expected to attend class every week, stay for the entire duration of class, and be an active participant. Lack of attendance, leaving early, and not participating will be detremental to your grade. However, I do understand that things happen (important meeting conflicts with class, unexpected sickness, etc.). So, for this course, you are allowed to have 4 unexcused absences from class, no questions asked. For all other absences and/or if you need to leave early, you will need to notify me with supporting documentation for your reasons.
In-class Presentation and Discussion
Each week, a group (or groups) of students will be asked to present their ideas and solutions to the class. Essentially, you will lead the discussion and answer questions/comments from other students, and myself. You will be evaluated on your presentation, your (attempted) solution, and your discussion.
For this reason, it is essential you attend class. Not every student/group will be required to present each week, but every student/group will be expected to participate in the discussion that comes with the presentations. Full details about in-class presentations and discussions can be found under the In-class Work section of this website.
In-class Report
To conclude every week of class, all students will individually submit a report. This report will discuss the problem(s) we tackled during class, what the student did to tackle this problem (individually or in a group), and how the discussion helped confirm your solution or helped you find the right solution/clarify your answer.
This report is not meant to be a super formal write-up, but rather to help track your progress and understanding during the semester. Moreover, you are allowed to miss/drop 2 of these reports throughout the semester, no questions asked. Full details about in-class reports can be found under the In-class Work section of this website.
Projects
As this course is meant to give you ample practice reinforcing your skills, there will be a series of programming projects throughout the semester. The current expectation is 4-6 projects depending on the course pacing; i.e., at most one project for each topic covered, maybe a project that incorporates more topics (note this does not mean course concepts will not overlap between topics and projects).
All projects will use the C++ programming language, unless otherwise stated. Your lowest project grade will be automatically dropped. Projects will also require a report and/or office hours presentations alongside the submitted code. Full details about course projects can be found under the Projects section of this website.
Midterm Exam
There will be an in-class midterm exam, covering topics from (roughly) the first half of the course. The tentative date for the midterm exam is Thursday, October 16, 2025, with an in-class review planned for the previous lecture on Tuesday, October 14, 2025. Please plan to attend class on this day for the midterm exam. I will notify all students once the midterm exam date is finalized, and will do so as soon as possible.
Final Exam
There will also be an in-person, written final exam. You are required to take this exam, barring extraneous circumstances. Students who do not take the final exam will be unable to receive a passing grade in this course. Moreover, do not expect to get a passing grade if you simply show up, write your name on the exam, and don’t do the exam (or some variation of this).
Academic Integrity
Consulting with your classmates on assignments is encouraged, except where noted. However, turn-ins are individual or group-based, and copying code/text from your classmates is considered plagiarism (in the case of individual reports, copying your group memeber’s report is also plagiarism). You should never look at someone else’s writing/code, or show someone else your writing/code, unless otherwise directed by the instructor. Either of these actions are considered academic dishonesty (cheating) and will be prosecuted as such.
To avoid suspicion of plagiarism, you must specify your sources together with all turned-in materials. List classmates you discussed your homework with and webpages/resources (this includes AI usage) from which you got inspiration and help. Plagiarism and cheating, as in copying the work of others, paying others to do your work, etc., is obviously prohibited, and will be reported (this includes asking questions and copying answers from forums such as Stack Overflow and Reddit).
I report all suspected academic integrity violations to the dean of students. If it is your first time, the dean of students may provide the option to informally resolve the case – this means the student agrees that my description of what happened is accurate, and the only repercussions on an institutional level are that it is noted that this happened in your internal, UIC files (i.e., the dean of students can see that this happened, but no professors or other people can, and it is not in your transcript). If this is not your first academic integrity violation in any of your classes, a formal hearing is held and the dean of students decides on the institutional consequences. After multiple instances of academic integrity violations, students may be suspended or expelled. For all cases, the student has the option to go through a formal hearing if they believe that they did not actually violate the academic integrity policy. If the dean of students agrees that they did not, then I revert their grade back to the original grade, and the matter is resolved.
If you are found responsible for violating the academic integrity policy, the penalty can range from receiving a zero on the assignment in question, receiving a grade deduction, or receiving an F in the class, depending on the severity of the violation.
As a student and member of the UIC community, you are expected to adhere to the Community Standards of academic integrity, accountability, and respect. Please review the UIC Student Disciplinary Policy for additional information.
GenAI
Usage of GenAI is allowed in this course. However, you are expected to use GenAI as a tool to help you, and not as a tool to do the work for you. These are two completely different things. This means you should not be submitting any assignment in this course that is completely written by AI. Doing so constitutes a violation of the course conduct policy and will be appropriately punished.
Failure to adhere to this policy will result in the following consequences:
- First use: You will lose 50% of the points available on the assignment.
- Second use: You will fail the assignment.
- Third use: You will fail the course.
GenAI has helped and hindered new and old programmers alike, and it is in your best interest to use GenAI properly to help you solve problems, not solve them for you (as they will often include extra/incorrect/bloated code). See this article exploring the harm GenAI has done to new programmers.
Accommodations
Disability Accommodation Procedures
UIC is committed to full inclusion and participation of people with disabilities in all aspects of university life. If you face or anticipate disability-related barriers while at UIC, please connect with the Disability Resource Center (DRC) at drc.uic.edu, via email at drc@uic.edu, or call (312) 413-2183 to create a plan for reasonable accommodations. To receive accommodations, you will need to disclose the disability to the DRC, complete an interactive registration process with the DRC, and provide me with a Letter of Accommodation (LOA). Upon receipt of an LOA, I will gladly work with you and the DRC to implement approved accommodations.
Religious Accommodations
Following campus policy, if you wish to observe religious holidays, you must notify me by the tenth day of the semester. If the religious holiday is observed on or before the tenth day of the semester, you must notify me at least five days before you will be absent. Please submit this form by email with the subject heading: “[CS 402 Fall 2025] YOUR NAME: Requesting Religious Accommodation.”
Classroom Environment
Inclusive Community
UIC values diversity and inclusion. Regardless of age, disability, ethnicity, race, gender, gender identity, sexual orientation, socioeconomic status, geographic background, religion, political ideology, language, or culture, we expect all members of this class to contribute to a respectful, welcoming, and inclusive environment for every other member of our class. If aspects of this course result in barriers to your inclusion, engagement, accurate assessment, or achievement, please notify me as soon as possible.
Name and Pronoun Use
If your name does not match the name on my class roster, please let me know as soon as possible. My pronouns are [she/her; he/him; they/them]. I welcome your pronouns if you would like to share them with me. For more information about pronouns, see this page: https://www.mypronouns.org/what-and-why.
Community Agreement/Classroom Conduct Policy
- Be present by removing yourself from distractions, whether they be phone notifications, entire devices, conversations, or anything else.
- Be respectful of the learning space and community. For example, no side conversations or unnecessary disruptions.
- Use preferred names and gender pronouns.
- Assume goodwill in all interactions, even in disagreement.
- Facilitate dialogue and value the free and safe exchange of ideas.
- Try not to make assumptions, have an open mind, seek to understand, and not judge.
- Approach discussion, challenges, and different perspectives as an opportunity to “think out loud,” learn something new, and understand the concepts or experiences that guide other people’s thinking.
- Debate the concepts, not the person.
- Be gracious and open to change when your ideas, arguments, or positions do not work or are proven wrong.
- Be willing to work together and share helpful study strategies.
- Be mindful of one another’s privacy, and do not invite outsiders into our classroom.
Furthermore, our class (in person and online) will follow the CS Code of Conduct. If you are not adhering to our course norms, a case of behavior misconduct will be submitted to the Dean of Students and to the Director of Undergraduate Studies in the department of Computer Science. If you are not adhering to our course norms, you will not get full credit for your work in this class. For extreme cases of violating the course norms, credit for the course will not be given.
Student Parents
I know well how exhausting balancing school, childcare, and work can be. I would like to help support you and accommodate your family’s needs, so please don’t keep me in the dark. I hope you will feel safe disclosing your student-parent status to me so that I can help you anticipate and solve problems in a way that makes you feel supported. Unforeseen disruptions in childcare often put parents in the position of having to choose between missing classes to stay home with a child or leaving them with a less desirable backup arrangement. While this is not meant to be a long-term childcare solution, occasionally bringing a child to class in order to cover gaps in care is perfectly acceptable. If your baby or young child comes to class with you, please plan to sit close to the door so that you can step outside without disrupting learning for other students if your child needs special attention. Non-parents in the class, please reserve seats near the door for your parenting classmates or others who may need to step out briefly.
Academic Success, Wellness, and Safety
We all need the help and the support of our UIC community. Please visit my drop-in hours for course consultation and other academic or research topics. For additional assistance, please contact your assigned college advisor and visit the support services available to all UIC students.
Academic Success
- UIC Tutoring Resources
- College of Engineering tutoring program
- Equity and Inclusion in Engineering Program
- UIC Library and UIC Library Research Guides.
- Offices supporting the UIC Undergraduate Experience and Academic Programs.
- Student Guide for Information Technology
- First-at-LAS Academic Success Program, focusing on LAS first-generation students.
Wellness
-
Counseling Services : You may seek free and confidential services from the Counseling Center at https://counseling.uic.edu/.
-
Access U&I Care Program for assistance with personal hardships.
-
Campus Advocacy Network : Under Title IX, you have the right to an education that is free from any form of gender-based violence or discrimination. To make a report, email TitleIX@uic.edu. For more information or confidential victim services and advocacy, visit UIC’s Campus Advocacy Network at http://can.uic.edu/.
Safety
- UIC Safe App—PLEASE DOWNLOAD FOR YOUR SAFETY!
- UIC Safety Tips and Resources
- Night Ride
- Emergency Communications: By dialing 5-5555 from a campus phone, you can summon the Police or Fire for any on-campus emergency. You may also set up the complete number, (312) 355-5555, on speed dial on your cell phone.