Back to Course Info


Course Instructors

Brad Solomon, Teaching Assistant Professor, Department of Computer Science

Office: 2233 Siebel Center for Computer Science


Office Hours

Link to Office Hours Schedule

Course Description

This course is an introduction to elementary concepts in algorithms and classical data structures, focusing on their role in Data Science. Students will learn a variety of elementary data structures (ex: lists, trees, graphs, sets, and hash tables) as well as algorithm design and analysis. There is a strong emphasis on coding in this course – programming assignments will include short lab assessments and larger mini-projects designed to give first-hand experience building and applying data structures to solve complex tasks. By the end of the course, students should be able to design, implement, and justify the use of foundational algorithms and data structures.



There are no required textbooks for this course. Listed below are some optional textbooks which may supplement this course in some way. No readings will be required.


There are three offical avenues for asynchronous communication in CS 277.


Piazza is like a newsgroup or forum — you are encouraged to use it to ask questions, request clarifications, express opinions, give advice. We will give you enrollment instructions at the first day of class but you can also use the link here (or on the website’s Course Information page). The Piazza site for this class is: Piazza.

We expect that you will be courteous and post only material that is somehow related to CS 277 (however slightly). The forum will be lightly moderated.

Piazza will be a great place to post most questions regarding assignments - both the course staff and other students are allowed to answer your questions. Please try to avoid asking questions that have already been asked and answered. Also, do not post code!!! We encourage you to post your questions on Piazza first and likewise encourage you to post them as public questions as it is very likely that many students probably have similar questions.


The course Discord is meant to provide a community framework for students to interact on topics both related and unrelated to the course itself. The Discord will be both automoderated and manually moderated. Use your best judgement when posting material – all communication should follow the community guidelines posted on Discord as well as all university policies.


You are strongly encouraged to email the course instructor if you have any questions, need assistance, or would like to schedule a meeting. If you do not receive a response after 24-48 hours, you are strongly encouraged to follow up. Be sure to include ‘CS 277’ somewhere in the subject for the fastest response.


All assignments will have a submission link (and corresponding point value) on Prairielearn and will be updated regularly throughout the semester.

Point breakdown

Category Contribution Notes
Mini-Projects 300 points 75 points each
Lab Assignments 300 points 25 points each
Exams 300 points 100 points each (Formerly 75)
Final 100 points  

The point breakdown here may change throughout the semester based on student progress but should generally remain relatively fixed by category. For example, if the pacing of the class requires removing a mini-project (or an exam is dropped), the corresponding points for the remaining assignments will increase.

Expected Grade Cutoffs

Points Minimum Grade
[900, 1000] A-
[800, 900) B-
[700, 800) C-
[600, 700) D
[0, 600) F

We might lower these cutoffs; for example, perhaps 670 points will turn out to be enough for a C-; however, we won’t raise them.

We do not assign letter grades for individual scores. We also do not ever curve individual exam or assignment scores. If an exam or assignment should turn out to be significantly harder than we meant it to be, we would announce a lowering of the expected cutoffs above for the various letter grades, in effect lowering the percentage needed for a grade and curving the grades.

Assignments and Assignment Policies


There will be approximately four mini-projects in the course. They will serve many purposes:

You are given approximately three weeks for each MP. Exact MP due dates will be announced in lecture and on the MP specification page.

Lab Meetings

There will be approximately 12 lab sessions during the semester, each of which consists of a small intro and a lab exercise. The labs are designed to be completed in a few hours – lively discussion and collaboration with course staff and fellow students during the labs should usually (but not always) result in significant progress toward finishing the exercise.

The purpose of labs is to help improve your programming abilities and reinforce concepts taught in lecture. Exact lab formats may change week-to-week, but a usual lab will consist of about 10 minutes of discussion over the material covered in lecture and about 60 minutes of collaborative coding.

Extensions and Late Policies

To accommodate the complexity and stress of your college experience, mini-projects have a built-in 24-hour extension for reduced (93%) credit. If you need a longer extension due to an emergency of any kind, email the course instructor. Be sure to include CS 277 somewhere in the subject. At instructor discretion, you may be given additional time to complete any assignment or given alternative homework assignments to make-up the material you missed.

Exam Policies

See the Exams page.

Academic Integrity

For a more detailed description of our Academic Integrity Policy, please see Academic Integrity. You are responsible for the content there, but as an overview:

Commitment to Diversity, Equity, and Inclusion

As the state’s premier public university, the University of Illinois at Urbana-Champaign’s core mission is to serve the interests of the diverse people of the state of Illinois and beyond. The institution thus values inclusion and a pluralistic learning and research environment, one which we respect the varied perspectives and lived experiences of a diverse community and global workforce.

We support diversity of worldviews, histories, and cultural knowledge across a range of social groups including, but not limited to, race, ethnicity, gender identity, sexual orientation, abilities, economic class, age, religion, and their intersections. The Grainger College of Engineering recognizes that we are learning together in the midst of the Black Lives Matter movement, that Black, Hispanic, and Indigenous voices and contributions have largely either been excluded from, or not recognized in, science and engineering, and that both overt racism and micro-aggressions threaten the well-being of our students and our university community.

This course and it’s social resources like Piazza should be safe and encouraging learning environment that allows for the open exchange of ideas while also ensuring equitable opportunities and respect for all. Everyone is expected to help establish and maintain an environment where students, staff, and faculty can contribute without fear of personal ridicule, or intolerant or offensive language. If you witness or experience racism, discrimination, micro-aggressions, or other offensive behavior, you are encouraged to bring this to the attention of the course director or the course staff either directly or anonymously. You can also report these behaviors to the Campus Belonging Office link, the Office of Student Conflict Resolution link, or CS CARES link.

Students with Disabilities

Disability Resources and Educational Services (DRES), a unit of the College of Applied Health Sciences, serves as the designated office of the University that coordinates campus-wide services for students with disabilities. DRES obtains and files disability documentation, certifies eligibility for services, and coordinates the planning and provision of auxiliary aids as well as the implementation of modifications and adjustments in academic rules, policies and procedures. Professional staff are available at DRES to provide University students with disability-related consultation and to assist them in obtaining both academic and nonacademic supports and services.

Any student with a disability who may need accommodations in this class should obtain an accommodation letter from the Disability Resources and Education Services (DRES) Office. Accommodations should be made known early in the semester and cannot be retroactively applied to assignments due before the time the accommodation was made known. For more details please refer to the university-wide academic accommodations policy.

Statement on Mental Health

Diminished mental health, including significant stress, mood changes, excessive worry, substance/alcohol abuse, or problems with eating and/or sleeping can interfere with optimal academic performance, social development, and emotional well-being. The University of Illinois offers a variety of confidential services including individual and group counseling, crisis intervention, psychiatric services, and specialized screenings at no additional cost. If you or someone you know experiences any of the above mental health concerns, it is strongly encouraged to contact or visit any of the University’s resources provided below. Getting help is a smart and courageous thing to do – for yourself and for those who care about you.

Counseling Center: 217-333-3704, 610 East John Street Champaign, IL 61820

McKinley Health Center:217-333-2700, 1109 South Lincoln Avenue, Urbana, Illinois 61801

University wellness center: