Skip to content

CSC 212: Data Structures (Spring 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:
  • Teaching Assistants:
    • Gyanko Yussif
    • Wilhelmina Aumann
  • Lectures:
    • TR 9:30 - 10:45a @ Kirk Hall
  • Labs:
    • Lab 01 [Wilhelmina, Gyanko]
      • W 10 - 11:45a @ Library 166
    • Lab 02 [Wilhelmina, Gyanko]
      • W 12 - 1:45p @ Library 166
    • Lab 03 [Gyanko]
      • W 2 - 3:45p @ Tyler Hall 53
  • Office Hours:
    • Monday
      • Prof. Alvarez, 2-3p
    • TBA

All TA office hours will be held in the top floor of Tyler Hall.

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 in this course will utilize the following platforms for communication, assignments, and assessment. All students are required to use their primary email from eCampus for accessing these platforms. Automatic registration will be provided for students.

Placeholder Ed Discussion: Serves as the primary platform for academic discussions, polls, and quizzes. Ed facilitates student engagement with peers and instructors, fostering knowledge sharing and comprehension of key concepts. The platform's intuitive interface supports various discussion formats, including text, mathematical equations, code snippets, and circuit diagrams [Ed Help].

Placeholder Gradescope: Streamlines the assignment submission and grading processes, ensuring prompt and consistent feedback from instructors. Gradescope's advanced features allow for efficient grading of written and programming assignments. Students can review their evaluated work, analyze detailed feedback, and identify areas for improvement. The platform also supports regrade requests, promoting transparency in the assessment process [Gradescope Help Center].

Placeholder Zoom: Facilitates virtual sessions and meetings, providing a flexible means for students to interact with instructors and teaching assistants. Zoom's screen sharing and whiteboard features enable effective remote collaboration. Students can participate in one-on-one or group sessions, enhancing their understanding of course material through direct engagement with instructors [Zoom Support].

Effective utilization of these tools is key to optimizing the learning experience in this course. Students should familiarize themselves with each platform, actively participate in Ed discussions and submit assignments through Gradescope by the designated deadlines.

Lab Sessions

Lab sessions, scheduled on Wednesdays, constitute an integral component of the learning experience in this course. These structured sessions incorporate both instructional and hands-on elements, featuring:

  • focused technical lectures and/or interactive live coding delivered by teaching assistants and course instructors on C++ programming topics;
  • supervised problem-solving sessions where students engage with programming exercises.

During each laboratory period, students are required to complete a set of prescribed exercises that reinforce theoretical concepts presented in lectures. Laboratory submissions through the Gradescope platform are automatically verified for correctness using autograders, and feedback is provided promptly. Submissions serve as attendance verification and will be factored into the final course grade as part of the lecture/lab attendance component (5%).

The completion and submission of laboratory exercises demonstrate active engagement with the course material and contribute to the development of essential programming skills.

Assessment and Grading

Final Grade Breakdown

  • Homework Assignments (25%)
  • lowest score dropped, missed assignments receive a zero
  • total of 10 assignments
  • Midterm 1 (20%)
  • Midterm 2 (25%)
  • Final (25%)
  • Lecture/lab attendance (5%)
  • lecture attendance will be tracked via Gradescope polls and sign-in sheets
  • lab attendance will be tracked via lab submissions

Average of all exams must be at least 50 to pass the course \(\left((M1+M2+F)/3 \geq 50\right)\), regardless of overall course grade.

Final letter grades are assigned according to the following scale. The final letter grade corresponds to the highest threshold value less than or equal to the student's final numerical grade.

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

Homework Assignments

Homework assignments are to be completed individually unless explicitly stated otherwise in the assignment instructions. Students will typically have 6-9 days to complete each assignment, with specific due dates clearly indicated on the course website.

Late submissions will NOT be accepted. To maximize learning outcomes and receive valuable feedback, students are strongly encouraged to discuss their code, solutions, or questions during the instructor/TA's office hours prior to assignment due dates.

The evaluation of homework assignments in this course is conducted by autograders via the Gradescope platform. This grading infrastructure performs comprehensive testing of students' submissions, examining both functional correctness and adherence to specified requirements. To ensure optimal performance and timely completion of assignments, students are strongly encouraged to engage in collaborative discussion of their implementation approaches during office hours well in advance of submission deadlines to allow sufficient time for refinement and optimization of solutions.

Exams

The course includes two midterm and one final examinations, conducted in-person during scheduled lecture times or as indicated by the URI final exam schedule. These exams assess students' understanding of concepts covered in lectures. Key points to consider:

  • 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 and well-documented circumstances (e.g., medical emergencies, family emergencies, university-sanctioned activities with prior notice) and must be approved by the instructor.

Regrading Policy

Students may submit regrade requests through Gradescope within one week of grade release for exams and homework assignments. Requests must clearly identify the grading error and provide justification. Regrade reviews may result in score adjustments in either direction.

Course Communication

Ed Discussion is the primary platform for all course-related questions, technical discussions, and clarifications. Course staff monitor Ed regularly and aim to respond within 24 hours on weekdays. Students are strongly encouraged to engage in discussions and help answer peers' questions, fostering a collaborative learning environment. For personal matters, students may contact the instructor or TAs via email. Debugging assistance and code review should be addressed during office hours. Course staff do not provide support on weekends or university holidays.

Academic Integrity

This course encourages collaborative discussions and peer learning to enhance understanding of course topics. However, students must maintain the highest standards of academic integrity in all their work. For written and programming assignments, sharing solutions or copying another student's work is strictly prohibited. These actions constitute plagiarism, a serious academic offense that carries significant consequences as outlined in the University's Academic Honesty Procedures.

Permitted collaboration: Discussing concepts, algorithms, debugging strategies, and problem-solving approaches with peers and course staff; seeking help from instructors/TAs by showing them your code during office hours.

Prohibited actions: Viewing or copying another student's code; sharing your code with other students; using solutions from online sources, previous semesters, or other students; submitting work that is not substantially your own.

AI and Large Language Models (LLMs)

This course embraces the integration of AI tools such as ChatGPT, Gemini, Claude, or Github Copilot as learning aids. Students are encouraged to leverage these technologies for brainstorming, concept exploration, code analysis, and improving problem-solving skills. These tools can enhance understanding of data structures concepts and aid in various aspects of coursework. However, it is crucial to maintain a balance between AI assistance and learning. While AI can enhance learning, it should complement rather than replace students' critical thinking and problem-solving skills.

All student submissions that incorporate AI-generated content must include proper citation. This includes all coursework where AI tools have been used to generate, edit, or enhance the content. Students must clearly indicate which portions of their work were created with AI assistance and specify the AI tool used.

Students should view AI-generated content as a starting point, building upon it with their own understanding and critical analysis. For programming assignments, a thorough comprehension of any AI-suggested code is essential before incorporation. Students are encouraged to seek instructor guidance if uncertain about appropriate AI tool usage.

It's crucial to verify AI-generated information, as these tools can produce errors or outdated content.

Academic Enhancement Center

Nearly all students recognize that regardless of how well or poorly they are doing in a given class, there are ways to improve their learning and studying. The Academic Enhancement Center (AEC), located in Roosevelt Hall, offers several kinds of support that help students improve their learning and academic performance in this class as well as other classes. For information on any of these programs, visit the AEC website or call the AEC’s main number at (401) 874-2367.

Disability Accommodations

Students with documented disabilities are encouraged to contact the instructor as early in the semester as possible to arrange appropriate accommodations. As part of this process, students should first contact Disability, Access, and Inclusion (DAI).

Religious Observances

In accordance with University of Rhode Island policy, students are granted the opportunity to observe their traditional religious holidays. Students wishing to observe a holiday of special importance must provide written notification to the instructor in advance.