Skip to content

CSC 212: Data Structures (Spring 2025)

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:
    • Subek Acharya, Hafija Aktar, Brandt Ogden, Matthew Barbrack
  • Lectures:
    • TR 9:30 - 10:45 @ Kirk
  • Labs:
    • Lab 04 [Brandt]
      • W 8 - 9:45a @ Tyler 53
    • Lab 01 [Brandt, Subek]
      • W 10 - 11:45a @ Library 166
    • Lab 02 [Subek, Hafija, Matthew]
      • W 12 - 1:45p @ Library 166
    • Lab 03 [Hafija, Matthew]
      • W 2 - 3:45p @ Tyler 53
  • Office Hours:
    • Monday
      • Brandt, 10 - 12p
      • Prof. Alvarez, 2 - 3p
    • Tuesday
      • Matthew, 5:30 - 7:30p
    • Wednesday
      • Subek, 2:30 - 4:30p
      • Matthew, 4:30 - 6:30p
    • Thursday
      • Hafija, 12 - 2p
    • Friday
      • Hafija and Subek, 2 - 4p [Weekly Review], Tyler 55

All office hours will be held in-person in the lounge area on the top floor of Tyler Hall (next to the elevator).

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 computer organization 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].

Placeholder Kattis: Online platform that supports programming labs and assignments, providing a secure environment for code submission and evaluation, by running a series of test cases on the submitted code. Kattis allows students to practice coding problems, receive immediate feedback, and track their progress in mastering programming concepts [Kattis Help].

Thanks to the generous complimentary licenses provided by Kattis, students can access the platform for free during the duration of this course (Spring 25).

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 delivered by teaching assistants and course instructors on specialized programming topics;
  • interactive live coding demonstrations that illustrate practical implementation techniques in C++;
  • 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. While laboratory submissions through the Gradescope platform are mandatory and serve as attendance verification, they are not factored into the assignment grade calculation. 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

  • Homework Assignments (programming, problem sets) (35%)
  • Exams (midterm 1, midterm 2, final) (65%)
  • Participation (lecture/lab attendance, Ed participation) (5-10% extra credit)

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 programming assignments in this course 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 and open-book (printed/handwritten materials only);
  • no electronic devices are allowed;
  • make-up exams are granted only for exceptional and documented circumstances and must be approved by the instructor.

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, copying another student's work, or using uncredited AI-generated content is strictly prohibited. These actions constitute plagiarism, a serious academic offense that carries significant consequences as outlined in the University's Academic Honesty Procedures.

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 problem-solving approaches. 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, but is not limited to, assignments, presentations, and any other 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.