# Syllabus (Fall 2019)

## Description

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.

## Course Info

• 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).

## Lab Sessions

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

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

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.

## Discussion Sections

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.

Lab Attendance 1 5%
Programming Assignments 8 25%
Midterm Exams 2 40%
Final Exam 1 30%

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


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.