Syllabus (Fall 2020)
Visit the COVID-19 Response for additional information about the URI reopening plans and copies of all communications distributed by URI Communications.
This class will now take place fully online until the end of the semester. Lectures and office hours will be held synchronously via Zoom. Links for online lectures, labs, and office hours are available on Piazza. Make sure you are using your new @uri.edu account, to gain automatic access to all online tools used in this class.
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.
Course Info and Schedule
- Instructor: Prof. Marco Alvarez
- Lectures: TR 11 - 12:15p
- Labs: W 12 - 1:45p and F 10 - 11:45a
- TAs: Christian Esteves, John Bertsch, Johann Muller
|10a||OH (Johann)||OH (Johann)||Lab 2|
|11a||OH (Johann)||Lecture||OH (Johann)||Lecture||Lab 2|
|12p||Lab 1||OH (John)||OH (John)|
|1p||OH (Christian)||Lab 1||OH (Christian)||TA Meeting||OH (John)|
|2p||OH (John)||OH (Christian)||OH (Christian)|
|3p||OH (John)||OH (Marco)|
Support Tools and Technology
Students in this class will use the following platforms for communication, assignments, grading, and code development. All students are required to use their primary email from
eCampus for entering Piazza and Gradescope. We automatically register students.
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.
- Data Structures & Algorithm Analysis in C++, 4th Ed., M. A. Weiss
- Introduction to Algorithms, 3rd Ed., T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein
- Algorithms, 4th Ed., R. Sedgewick, K. Wayne
- Algorithm Design and Applications, 1st Ed, M. T. Goodrich, R. Tamassia
- Open Data Structures and Algorithms, open source hypertextbook
Lab sessions will be held on Wednesdays and Fridays. Lab sessions may involve short lectures on specific topics or live coding sessions given by TAs and instructors, followed by a set of exercises or problems. Students are required to solve all given exercises within the time allocated for the lab and turn in solutions through Gradescope by the due time. Lab work is individual and the solutions will not be graded, however, attendance to labs is part of the final grade and your submitted solutions will be used to track attendance.
Homework assignments are individual work, unless stated otherwise in the assignment's instructions. Students will have roughly 7-10 days to work on each assignment. Each assignment has a specific due date/time listed on the course website. Late submissions will not be accepted. Most programming assignments will be automatically graded on Gradescope. Students are strongly encouraged to bring their code to TA or instructor's office hours prior to the due date.
Students are free to use any IDE for working on programming assignments and during the lab sessions. However, source code submitted to the autograder must compile without any errors with a
g++ compiler. We strongly recommend using CS50 IDE online. Additional information on CS50 IDE can be found in the CS50 IDE documentation.
Exams will be held during lecture times. A PDF copy of the exam will be sent to students by email (to each email address registererd on eCampus) a few minutes prior to the exam's scheduled time. Students must mark their solutions in the exam and submit the marked PDF trough Gradescope within the allocated time. Make-up exams are given only in rare cases of well-documented events.
The Final Project is to be done in groups of 3 students. The goal is to develop an application involving some of the algorithms and data structures studied during the semester. Your group will select a project from the list posted by the instructors. Most of the projects will require auxiliary reading and continuous effort throughout the semester. A good amount of extra-credit will be assigned to outstanding projects. Two lab sessions will be reserved for live presentations of your final projects by the end of the semester.
Final letter grades are calculated using the cutoffs below. These values might be lowered, but they will not be raised. A final letter grade will be the letter corresponding to the highest cutoff value less or equal than the final grade. Consider that those values are strict. For example, a final grade of 93.99 is an
A- and not an
A A- B+ B B- C+ C C- D+ D F 94 90 87 83 80 77 73 70 67 60 0
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.
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.
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 Services for Students Office.
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.