Skip to content

CSC 212: Data Structures (Fall 2026)

This syllabus is subject to change at the instructor's discretion. Any modifications will be communicated to students with reasonable notice.

Course Description

CSC 212 presents a comprehensive study of fundamental data structures and algorithms that form the foundation of efficient software development. Students examine both the theoretical and implementation aspects of key computational structures including linked lists, stacks, queues, trees, graphs, hash tables, and their associated algorithms. The course provides coverage of searching and sorting algorithms, emphasizing their complexity analysis using asymptotic notation.

Throughout this course, students implement these structures and algorithms in C++, gaining practical experience with memory management, pointers, and object-oriented design principles.

Prerequisites

Grade of C- or better in CSC 211; and MTH 180 or Computer Engineering major status.

Course Information

  • Instructor: Prof. Marco Alvarez
  • Teaching Assistants: Gyanko Yussif, Samir Shakir, Wilhelmina Aumann
  • Office Hours: TBD, will be posted on Ed once finalized.
Section Meets Where
Lecture TR 11:00a - 12:15p White Hall 113 (Auditorium)
CSC 212-L03 W 8:00 - 9:45a Tyler Hall 53
CSC 212-L02 W 10:00 - 11:45a Library 166
CSC 212-L01 W 12:00 - 1:45p Library 166

Student Learning Outcomes

Upon successful completion of this course, each student will be able to:

  • implement code using pointers and dynamic memory allocation;
  • implement solutions that involve recursive functions;
  • compare different algorithms and data structures based on efficiency, using empirical and theoretical algorithm analysis techniques;
  • choose appropriate data structures and algorithms to solve a problem;
  • implement sorting algorithms and understand their performance under different scenarios;
  • implement and use basic data structures, including linked lists, stacks, queues, priority queues, trees, balanced trees, and graphs;
  • implement and use containers such as sets, maps, and hash tables.

Support Tools and Technologies

Students are automatically registered for the platforms below and are required to use their primary eCampus email to access them.

Ed Discussion logo Ed Discussion: the primary platform for academic discussions, polls, and quizzes. Ed supports text, mathematical equations, code snippets, and diagrams [Ed Help].

Gradescope logo Gradescope: handles assignment submission, autograding, and regrade requests. Students can review graded work and detailed feedback [Gradescope Help Center].

Zoom logo Zoom: used for virtual sessions and meetings, with screen sharing and whiteboard support for remote collaboration [Zoom Support].

Lab Sessions

Labs meet on Wednesdays and are where students write code with help nearby. Each session opens with a short technical talk or live coding on C++ topics, then moves into supervised practice on that week's exercises.

Most labs ship with starter files: a header declaring the interface, .cpp files with stubs to complete, a test suite that can be compiled and run locally, and any supporting tools the exercise needs.

Before submitting

Compile and run any provided test suite first. Catching a failure on your own machine is much faster than discovering it after submission. Submit only the files listed in the lab's readme.md, and none of the provided support files.

Lab work is graded through Gradescope on the automated tests together with participation in the session, and the submission is what records lab attendance for the 5% attendance component. Quizzes may also be given during lab sessions, described under Quizzes below.

Assessment and Grading

Homework Assignments

Assignments are individual work unless the instructions say otherwise. Students typically have 6-9 days per assignment, and every assignment is submitted through Gradescope. Due dates are listed on the course schedule. The lowest score is dropped, which covers one missed or weak assignment without special arrangement; any missed or late assignment beyond that receives a zero.

No Late Submissions

Late submissions will NOT be accepted. Questions about code or solutions should be raised during office hours before the due date, not after it.

Assignments come in two kinds:

Type What it asks for How it is graded
Programming assignment Working C++ code against a given problem description Autograded, checking functional correctness and adherence to the stated requirements
Problem set Written work: concepts, theory, and problem-solving Graded against a rubric by the course staff, with partial credit when appropriate

Students are strongly encouraged to bring their work to office hours early. On code, the autograder reports whether it passes, not whether the design is sound. On written work, a short conversation often catches a misunderstanding that would otherwise cost most of the problem.

Quizzes

Three short quizzes are given during lab time, each scheduled before an exam. The purpose is calibration. A quiz a week out surfaces what a student does not yet know while there is still time to act on it.

Final Project

Working in small teams, students build something substantial on top of the data structures covered in this course, and build it with AI assistance, deliberately.

Programming assignments are where a student proves they can implement a hash table themselves, while the project is where they learn to direct tools that write code faster than they can and remain responsible for whether the result is correct. Fundamentals are what make that second role possible, since nobody can supervise work they do not understand.

Deliverable What it is
Proposal One page naming the team, the idea, and a description and justification of the data structures expected to be used
GitHub repository The implementation and the written report, documented and built up through a real history of commits
Presentation A live presentation to the class during the final week

What the repository should show

A README explaining what the project does, how to build and run it, and the design decisions behind it. Commits should show the work happening across the semester. A single commit dropping a finished project the night before the deadline says nothing about how it was built, and will be read that way.

AI usage in the report

The report must include a section on AI usage, covering where AI tooling was used and what the team had to fix or reject. Getting a model to produce something is the easy part; knowing what to keep is the part worth writing about.

Exams

Two midterms and a final exam are given in person, the midterms during scheduled lecture time and the final as set by the URI Final Exam Schedule.

Key points:

  • exams are individual;
  • exams are paper-based and use the full class period;
  • no electronic devices are allowed;
  • make-up exams are granted only for exceptional, well-documented circumstances (medical or family emergencies, university-sanctioned activities with prior notice) and must be approved by the instructor.

Regrading Policy

Regrade requests are submitted through Gradescope within one week of grade release. A request must identify the specific grading error and justify it. Regrades may adjust a score in either direction.

Final Grade Breakdown

Component Weight Notes
Homework assignments 15% 5 assignments, programming or problem sets; lowest score dropped, missed assignments receive a zero
Quizzes 10% 3 quizzes, given in lab about a week before each exam
Final Project 15% Team project, presented in class
Midterm 1 15%
Midterm 2 20%
Final exam 20%
Lecture and lab attendance 5% Lab attendance tracked via Gradescope submissions; lecture attendance recorded in class

Passing Requirement

The average of the three proctored exams must be at least 50 to pass the course, \((M1+M2+F)/3 \geq 50\), regardless of the overall course grade.

Final letter grades use the scale below. A student's letter grade is the highest threshold less than or equal to their final numerical grade.

Grade Min % Grade Min %
A 94 C 73
A- 90 C- 70
B+ 87 D+ 67
B 83 D 60
B- 80 F 0
C+ 77

Course Communication

Ed Discussion is the primary channel for anything course-related: questions about the material, clarifications on assignments, and technical discussion. Course staff monitor it regularly and aim to reply within 24 hours on weekdays, and students are encouraged to answer each other's questions there as well. Debugging help and code review belong in office hours, where course staff can read the actual code instead of guessing from a description. Email the instructor or a TA only for personal matters, such as grades, absences, or accommodations. Course staff do not provide support on weekends or university holidays.

University Syllabus Statements

QR code linking to the URI All Syllabus Statements page

Required university-wide statements, covering excused absences, anti-bias, anti-discrimination resources, Title IX, disability services, and digital accessibility, are maintained centrally rather than repeated here. Scan the QR code or visit the All Syllabus Statements page.

Optional statements on that page especially relevant to this course:

  • Academic Honesty
  • Academic Enhancement Center (AEC)
  • The Writing and Speaking Studio
  • Resources for Mental Health and Well-being
  • University Libraries

That page also links recommended AI-use language. This course's own AI and Large Language Models policy takes precedence over the general university guidance.

What this course asks of you

Students who need accommodations, or who expect to miss class for a religious observance, illness, or university-sanctioned event, should tell the instructor as early in the semester as possible. Arrangements are far easier to make in advance than after the fact. For accommodations, start with Disability, Access, and Inclusion (DAI).

Academic Integrity

The goal here is to distinguish honest mistakes from intentional plagiarism or cheating. The University's Student Handbook sets out the guidelines, and academic dishonesty is reported to the Office of Community Standards through the Student Conduct process. Additional help is available through the Writing and Speaking Studio and the Academic Enhancement Center.

Collaboration and peer learning are encouraged in this course. Students may discuss concepts, algorithms, and debugging strategies with each other, work through problem-solving approaches together, and show their code to the instructor or a TA during office hours. What is not permitted is viewing or copying another student's code, sharing code with other students, or submitting solutions taken from online sources, previous semesters, or other students. The line is the code itself: talking about how to solve a problem is collaboration, handing over or reading someone else's solution is not.

AI and Large Language Models (LLMs)

Generative AI is part of how software gets written now, and students are free to use it in this course. The one standing expectation is disclosure: note where a tool was used and what it contributed.

What matters far more than whether these tools get used is how. A tool that produces a correct-looking answer in seconds is only worth something to someone who can tell whether the answer is actually correct, and building that judgment is the point of CSC 212.

Approach What it gets you
Asking for a concept explained another way, a compiler error decoded, or extra practice problems generated Faster understanding. A model is a tutor with no limit on patience.
Asking it to review code the student wrote, or to check reasoning the student already worked out Authorship stays with the student, and gaps surface early, while there is still time.
Asking it for a full solution, then reading it closely, testing it, and rewriting what does not hold up Useful, provided the student ends up understanding every line.
Asking it for a full solution and submitting it unread This holds up until the next quiz, where the model is not in the room.

Some assignments may carry an oral component, defined in the assignment itself, where a student talks through their submitted work with the instructor or a TA. These are announced in advance and are simply part of how that assignment is assessed.

AI models state wrong things fluently, including about asymptotic complexity and C++ memory semantics. Verify anything you intend to rely on.