Upon completing this course, each student will be able to:
- Develop C++ code using pointers and dynamic memory
- Choose appropriate data structures and algorithms to solve problems
- Compare different algorithms and data structures based on efficiency, using empirical and theoretical algorithm analysis techniques
- Implement solutions that involve recursive functions
- Implement sorting algorithms and understand their performance
- Implement and use basic data structures (linked lists, stacks, queues, trees, and graphs)
- Implement and use containers such as sets, maps, and hash tables
Throughout this semester we will loosely follow this format:
- 30 minutes of lecture, writing pseudo-code and analyzing algorithms
- 60 minutes of coding in groups
- 30 minutes of review
Throughout the semester there will be weekly programming assignments where students will be asked to implement various algorithms and data structures in C/C++. These assignments will be autograded for functionality, and manually graded for code-quality.
Grading will be as follows:
- Functional Correctness: 50-90 points
- Readability: Remainder of points
Throughout the semester I will be conducting randomized code reviews, where you will be asked to discuss your code in-depth. If you fail a code review you will receive a 0 for the assignment, if it is believed that you plagiarized, then I must report you to the Dean.
These assignments are to be done invidually.
We will be using advanced plagiarism detection techniques to compare all students code to both other submissions, as well as online resources. If your code is deemed to have been shared with other students, or you are suspected of taking code from online resources, you will be reported to the dean immediately. You are better off getting a 0 than trying to cheat theses assignments.
Exams for this class will be held during lecture times, in the Tyler Hall computer lab, and will proceed as follows:
- (40 Minutes) A written exam, focusing on conceptual understanding.
- (10 Minute Break)
- (40 Minutes) A programming challenge, focusing on problem solving skills.
The two portions of this exam will be weighted equally.
- No electronic devices (If I see any device other than the lab computer you will receive a 0 and be asked to leave the exam).
- No leaving the room during the examination blocks.
- No teamwork, exams are completely solo efforts.
- No internet access (If your device pings, you will receive a 0 and be asked to leave the room)
- During the entire exam:
- One hand-written 8.5" x 11" cheat sheet (double sided is fine)
- During the programming portion:
- Your cheat sheet
- devdocs.io will be setup with C++ cached for offline use
Each assignment in this course will be associated with some number of points. You're final grade will be the number of points you accrue divided by 2,000.
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.
Subject Specific Tutoring, located on the fourth floor of Roosevelt Hall, helps students navigate 100 and 200 level math, chemistry, physics, biology, and other select STEM courses (includes CSC 212). Options for peer tutoring are designed to enable you to get the kind of help you need when you need it. Students can join a Weekly Tutoring Group with others in their courses (information on groups will be made available to you in supported classes), stop by a subject-specific Drop-In Center as needed, or make a one-time Group Appointment. Information on what these programs offer, when they are available, and how to utilize them are available at AEC tutoring.
Discussions with others to understand general homework problems and class-related concepts are strongly encouraged. However, when working on assignments, all written work and source code must be your own. You might not look at anyone’s written solution. Students are prohibited from accessing or comparing homework answers with those of other students prior to submitting each assignment. Copying another individual solution is plagiarism, a serious offense, and the one most common in computer science courses. Anyone that provides homework answers, program code for a programming assignment to another individual is also guilty of academic dishonesty. Both will be prosecuted in accordance with the University’s Policy of Academic Honesty. If you do not have sufficient time to complete an assignment, then submit a partial solution.
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.