CSC 212: Data Structures & Algorithms#

Fall Location(s)#

Lecture

Section 0001
White Hall 113 Auditorium
Tuesday & Thursday 11:00 - 12:15p

Lab

Section L03
Library Room 166
Wednesday 8:00 - 9:45a

Section L02
Library Room 166
Wednesday 10:00 - 11:45a

Section L01
Library Room 166
Wednesday 12:00 - 1:45p

Fall Schedule#

Tuesday

Thursday

Lab

Assignment

Week 01

Analysis
Introduction

C++ Crash Course

A2 : Practical I
Maze Visualizer

Week 02

Analysis
Analysis of Algorithms

Analysis
Computational Cost

Runtime Clocking

A2 : Practical I
Maze Visualizer

Week 03

Linear
Dynamic Arrays

Admin Day
Term Project

Dynamic Arrays

A2 : Practical I
Maze Visualizer

Week 04

Linear
Linked Lists

Analysis
Big-O

Linked Lists

A3 : Conceptual I

Week 05

Linear
Stacks
Queues

Linear
Priority Queues
Recursive Algorithms

Priority Queues

A3 : Conceptual I

Week 06

Holiday Observed /
No Lecture

Search & Sort
Search Algorithms
Basic Sorts

Recursion

A3 : Conceptual I

Week 07

Search & Sort
Recurrences

Sick Day

Backtracking

A3 : Conceptual I

Week 08

Non-Linear
Binary Search Trees
Heaps

Search & Sort
Quicksort
Mergesort

Binary Search Trees

A4 : Practical II

Week 09

Non-Linear
Sets
Maps

Non-Linear
2-3 Trees

Sets & Maps

A4 : Practical II

Week 10

Non-Linear
Left-leaning Red Black Trees

Non-Linear
Greedy Algorithms

Balancing Act

A4 : Practical II

Week 11

Non-Linear
Hash Tables

Non-Linear
Graphs
DFS & BFS

Hash Tables

A5 : Conceptual II

Week 12

Happy

Thanksgiving

Break

A5 : Conceptual II

Week 13

Term Project

Term Project

Graphs

A5 : Conceptual II

Week 14

212 Project Presentations

212 Project Presentations

212 Project Presentations

Syllabus#

Course Description#

CSC 212 introduces fundamental concepts in data structures and algorithms, and their role in organizing and processing information efficiently. The course explores theoretical, implementation, and application aspects of important data structures and algorithms in use on modern computers. Particular emphasis is given to algorithms for searching and sorting. The course also covers basic concepts for analyzing space and time requirements of algorithms, critical for understanding their performance characteristics. C/C++ is the programming language required for programming assignments and lab sessions.

Prerequisites: C- or better in CSC 211; and MTH 180 or Computer Engineering major, and understanding the basics of programming in a higher level language such as C, Java, or Python. You should be familiar with classes, objects, methods, functions, loops, conditionals, arrays.

Course Staff#

Lecture

Professor
Jonathan Schrader, MS, MA
Office Hours By Appointment [via EdStem]

Lab

Graduate Teaching Assistant
David Perrone, BS Office Hours scheduled and by appointment [via EdStem]

Course / Lab Aides

Undergraduate Teaching Assistants
Nick Goltsos, Jessica Tingley, Cassidy Cooper, Addie Murphy, Yemi Fasina, Daniel Diaz Pereyra, Vincent Zhuang
Office Hours scheduled and by appointment [via EdStem]

Instructor Note: The syllabus is a living document and alterations may be made to the course as deemed necessary throughout the term…

Office Hours#

Monday

Tuesday

Wednesday

Thursday

Friday

Saturday

Sunday

8a

LAB03

9a

LAB03

10a

LAB02

11a

David

LEC

LAB02

LEC

Jess
Dan

12p

David

LAB01

1p

Addie

LAB01

Addie

2p

Addie [OH/LC]

Addie
Cassidy [2:30/💻]

Yemi

Addie
Cassidy [2:30/💻]

Cassidy [💻]

3p

Addie
Cassidy [💻]

Yemi

Addie
Cassidy [💻]

Cassidy [💻]

Nick

4p

Nick
Cassidy [4:30/💻]

Nick
Cassidy [4:30/💻]

Cassidy [💻]

Nick

5p

Nick

Nick

6p

Nick

Nick

7p

Nick

Nick

Unless otherwise stated, OH are held on the ground floor of Tyler Hall in the lounge area outside 053/055…

Support Tools and Technology#

Tools
  • EdStem : Course Communications

  • Gradescope : Submissions, Grades

  • GitHub : Course Deliverables

Invitations/instructions will be provided to the tools above…

Technology
  • A laptop with a full OS [iOS/Android devices not recommended]

  • JetBrains CLion [supported IDE]

While you are free to use any IDE for working with course programming, only Clion by JetBrains will be officially supported for this course. As well, source code submitted to the autograder must compile without any errors utilizing the g++ compiler.

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.

Course Components#

Lectures

Discussion based sessions used to confirm understanding through reading and self-paced research.

Labs

Practicum based sessions to confirm what you know and begin implementation of the material.

Assignments

Assignments are individual work used to implement broader-scoped practicum outcomes along with proof of theoretical understanding of the material.

Projects

A wide-ranged insight piece with a unique implementation of designated the data structure[s] and/or algorithm[s] with a formal presentation to your peers.

Exam

There is only one exam for this course: the final exam. The exam will be cumulative, timed, and consist of multiple choice questions.

Grading#

Task

Quantity

Course Points

Total Points

Labs

10

30

300

Assignments

4

75

300

Project

300

Exam (Cumulative)

100

Course Total

1000

Final letter grades are calculated using the cutoffs below. A ‘curve’ will not be applied to final course grades. However, those who make extraordinary effort to contribute to the overall flow and learning environment of the classroom, may be given additional consideration.

A

A-

B+

B

B-

C+

C

C-

D+

D

F

94

90

87

83

80

77

73

70

67

60

0

Note: Semester grading will be complete by the Sunday evening following your project presentations. Those with \(\ge 830\ course\ points\), will be exempt from the exam and granted an \(A\) for the term. Students with a 0 for any course deliverable beyond the final submission date in Gradescope will not be applicable to exemption.

Attendance & Submission#

Attendance


Lecture

Attendance IS NOT required

Lab

Attendance IS required

You must attend to receive credit for your submission

Proof of attendance

  • is signing in on the sign-in sheet at the beginning of lab and submitting at least once prior to days end

Caveat

“You get out what you put in…”

Advice

Those who opt out and or fail to submit, tend to repeat the course…

Submission


Labs

have a three day window for submission and a 3 day late window…

  • Review: prior to lab

  • Start: your designated lab

  • Due: Friday @ 11:59pm

  • Late: Monday @ 11:59pm

Assignments

have a three (3) week window for completion and are due on Mondays

  • All deliverables must be properly submitted through Gradescope no later than 11:59p on the respective day due.

Any Course Deliverable

not submitted within the submission window (including the late window) will result in automatic 10% reduction of your course grade per missed deliverable.

Four or more missed deliverables and you fail for the term…

Late Submissions & Extensions#

Late Submission


Labs

Will be allowed a 72-hour late window

  • Penalty of -20% / day late.

Assignments 2 & 4 only

Will be allowed a three (3) day late window.

  • Penalty of -50%.

Submissions outside of these opportunity windows will not be subject to grading.

Extensions


Consideration will be given on a case by case basis…

Administrative#

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) and Writing Center (WC), 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.

Academic Honesty
General
  • Discussions with peers to gain more insights on coursework and lectures is strongly encouraged. However, when working on assignments, all written work and source code must be original. Students might not look at anyone’s written solution. Copying another individual solution is plagiarism, a serious offense, and the one most common in computer science courses. Anyone that provides homework answers, source code for a programming assignment to another individual is also guilty of academic dishonesty. Students caught plagiarizing will be prosecuted in accordance with the University’s Policy of Academic Honesty.

Advanced Automated Tools
  • This term we will be using generative AI to partially complete labs. The use of AI is restricted to the prompting of ChatGPT-3.5. Prompts may not include direct content from the lab itself. (ie. you may not Copy & Paste from the lab.)

  • Your primary focus for gen-AI usage will be to source code for respective data structures per lab and review the code through integrity testing.

  • from a visual review, does this appear to do everything it needs to relative to the lab outcomes?

  • if not, re-prompt AI with a narrower/broader request

  • At the top of each data structure source code submitted, you will include a comment with the URL to the prompt used the outcome. If you need/choose to modify the source code received to satisfy the lab requirements, you must use clear, concise, meaningful comments to describe the change and why you’ve made it.

Disability Accommodations

Any student with a documented disability is welcome to contact me as early in the semester as possible, so that we may arrange reasonable accommodations. As part of this process, please be in touch with Disability, Access, and Inclusion Office.

Religious Holidays

It is the policy of the University of Rhode Island to accord students, on an individual basis, the opportunity to observe their traditional religious holidays. Students desiring to observe a holiday of special importance must provide written notification to each instructor.