Syllabus (Fall 2019)
CSC 211 provides a rigorous introduction to computer programming using the C/C++ language and object orientation. The course also explores basic computational problem-solving techniques, algorithms, and elementary data structures. Prior programming experience is not strictly necessary, however, students must be familiar with the basics of computers. Prerequisites: CSC 106 or major in Computer Engineering.
- Instructors: Prof. Marco Alvarez and Michael Conti
- Lectures: TR 12:30 - 1:45p
- Labs: M 2 - 3:45p, F 12 - 1:45p, and F 2 - 3:45p
- TAs: Christian Esteves, Yana Hrytsenko, Eben Aceto, and John Bertsch
- CSC 211 on Piazza
Student Learning Outcomes
Upon successful completion of this course, each student will be able to:
- describe how data are represented in memory (stack/heap);
- write programs of moderate complexity in C++;
- implement solutions that involve recursive functions;
- implement and use elementary data structures, including arrays/vectors and linked lists;
- reason about the computational costs of certain basic operations;
- decompose problems and develop abstractions to simplify problem solving;
- write programs using OOP concepts (e.g., objects, classes, encapsulation, polymorphism, and inheritance).
- Problem Solving with C++, 10th Ed., W. Savitch.
Lab sessions will be held on Fridays and Mondays. Lab sessions involve short explanations given by TAs or the instructor, followed by a set of programming exercises. Students are required to solve all programming exercises during the lab session and turn in solutions through Gradescope. Lab work is not graded work, however, attendance will be part of the final grade. We use your submitted solutions to record your attendance.
Programming assignments are individual work. Students will have roughly 7 days to work on each assignment, and there will be approximately 8 assignments in total. Each programming assignment has a specific due date/time listed on the course web site. Late submissions will not be accepted. All programming assignments are automatically graded on Gradescope. For each of the questions you either pass the test cases (full points awarded) or not (zero points). Partial credit on individual questions is not awarded. Students are strongly encouraged to bring their code to TA or instructor's office hours prior to the due date.
You are free to use any IDE for developing your programming assignments and working on the lab sessions. However, the source code you submit for programming assignments must compile without any errors on a linux station and a
g++ compiler. We strongly recommend using CS50 IDE. You can decide to install the offline CS50 IDE on your computer as a containerized app, for which, installing docker is necessary. Alternatively you can use CS50 IDE online, for which you only need to have a free GitHub account. You can also refer to the CS50 IDE FAQs if you want to know more about the IDE.
Exams are closed-book and held during lecture times. You are allowed to bring a cheat sheet to every exam. This reference page is a single sheet, in which you can include hand-written annotations only, on both sides. Students will be notified of the contents prior to the exam. Make-up exams are given only in rare cases of documented events.
Students are expected to participate in one discussion section per week. Sections are held every week on Monday and Tuesday at 5pm. In sections, we review topics lightly covered in lectures, introduce concepts not covered in class but useful for assignments, and provide exam reviews.
Your final letter grade will be calculated using the cutoffs in the table below. These cutoffs might be lowered, but they will not be raised. Your final letter grade will be the letter corresponding to the highest cutoff value less or equal than your final grade. Consider that those values are strict. For example, a final grade of 93.99 is an A- and not an A.
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 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.