Instructor: Michael Conti ([email protected]), Tyler 132
Lecture: Tu/We/Th | 1p - 2:50p | Library 166
Teaching Assistants: Yemi, Ilanna
Office Hours Schedule
Day | Staff Member | Time | Location |
---|---|---|---|
Tuesday | Yemi, Ilanna | 10a - 12p | Tyler 055 |
Wednesday | Yemi, Ilanna | 11a - 12p | Library 166 |
Thursday | Yemi, Ilanna | 10a - 12p | Tyler 055 |
Friday | Yemi, Ilanna | 11a - 12p | Tyler 055 |
Discussion Session
Attending 80% of discussion sessions will earn you an additional 5pts on your final exam.
Day | Staff Member | Time | Location |
---|---|---|---|
Tuesday | Yemi, Ilanna | 9a - 10a | Tyler 055 |
Thursday | Yemi, Ilanna | 9a - 10a | Tyler 055 |
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.
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 Thursday 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.
Depending on class demand, students can choose to participate in one discussion section per week where we review topics lightly covered in lectures introduce concepts not covered in class but useful for assignments, and provide exam reviews.
Coursework consists of lab attendance, problem sets, programming assignments, and exams. Your final grade will be calculated according to the following table:
Gradebook item | Count | Weight |
---|---|---|
Lab Attendance | 1 | 10% |
Programming Assignments | ~5 | 25% |
Weekly Programming Challenges | ~6 | 10% |
Exams | 2 | 30% |
Final Exam | 1 | 25% |
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 [94-100] | A- [90-93] | B+ [87-89] | B [83-86] | B- [80-82] | C+ [77-79] |
---|---|---|---|---|---|
C [73-76] | C- [70-72] | D+ [67-69] | D [60-66] | F [< 60] |
Located in Roosevelt Hall, the AEC offers free face-to-face and web-based services to undergraduate students seeking academic support. Peer tutoring is available for STEM-related courses by appointment online and in-person. The Writing Center offers peer tutoring focused on supporting undergraduate writers at any stage of a writing assignment. The UCS160 course and academic skills consultations offer students strategies and activities aimed at improving their studying and test-taking skills. Complete details about each of these programs, up-to-date schedules, contact information and self-service study resources are all available on the AEC website, uri.edu/aec.
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.
We respect the rights and dignity of each individual and group. We reject prejudice and intolerance, and we work to understand differences. We believe that equity and inclusion are critical components for campus community members to thrive. If you are a target or a witness of a bias incident, you are encouraged to submit a report to the URI Bias Response Team at www.uri.edu/brt. There you will also find people and resources to help.
Your access in this course is important. Please send me your Disability Services for Students (DSS) accommodation letter early in the semester so that we have adequate time to discuss and arrange your approved academic accommodations. If you have not yet established services through DSS, please contact them to engage in a confidential conversation about the process for requesting reasonable accommodations in the classroom. DSS can be reached by calling: 401-874-2098, visiting: web.uri.edu/disability, or emailing: [email protected]. We are available to meet with students enrolled in Kingston as well as Providence courses.
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.
The weekly schedule is subject to change per instructor discretion.
Week | Topics | Resources |
---|---|---|
Week 1 | Lecture - Introduction to 211, Computer Systems, Programming Languages Lecture - Problems/Algorithms/Programs, History of C++, The Compiler Lecture - C++ Basics, Input/Output, Data Types, Expressions Lab - Hello 211, IDE Setup, Basic Shell Commands Assignment - Assignment 00 Reading - Savitch, Chapter 1 Reading - Savitch, Chapter 2 |
Lecture Slides Lecture Slides Lecture Slides Lab Assignment00 |
Week 2 | Lecture - Number Systems, Further look into DataTypes Lecture - Expressions, Selection Statements Lecture - Introduction to Loops (for) Lab - Algorithms, Problem Design, Pseudo-code Exercises Lab - Programming Exercises (branching) Assignemnt - Assignment 01 Reading- Savitch, Chapter 3 Reading- Savitch, Chapter 4 |
Lecture Slides Lecture Slides Lecture Slides Lab Lab Assignment01 |
Week 3 | Lecture - Loops (while, do while) and Nested Loops (examples) Lecture - Functions Lab - Programming Exercises (loops and nested loops) Assignment - Assignment 02 Reading- Savitch, Chapter 5 Reading- Savitch, Chapter 6 |
Lecture Slides Lecture Slides Lab Assignment02 |
Week 4 |
Lecture - Scope of Variables, Parameter passing, Call Stack Lecture - Arrays, Arrays and Functions Lab - Using the Debugger, Programming Exercises (functions) Reading - Savitch, Chapter 7 Reading - Savitch, Chapter 8 |
Lecture Slides Lecture Slides Lab |
Week 6 | Lecture - Pointers Lecture - Recursion and Examples Lab - Basic sorting algorithms Assignment - Assignment 03 Reading- Savitch, Chapter 11 Reading- Savitch, Chapter 12 |
Lecture Slides Lecture Slides Lab Assignment03 |
Week 7 | Lecture - Recursion (cont.) and Examples Lecture - Binary Search Lab - Programming Exercises (pointers) Reading- Savitch, Chapter 13 |
Lecture Slides Lecture Slides Lecture Slides Lab Lab |
Week 8 | Lecture - Advanced Recursion (Backtracking), Structs Lecture - Classes, Data Members and Methods (Encapsulation) Lab - Programming Exercises (tracing recursion, drawing recursion trees) Assignment - Assignment#04 Reading- Savitch, Chapter 14 |
Lecture Slides Lecture Slides Lab Assignment04 |
Week 9 | Lecture - Constructors Lecture - Dynamic Memory Allocation, Destructors Lab - Implementing Classes (source/headers), Arrays and Objects Reading- Savitch, Chapter 15 |
Lecture Slides Lecture Slides Lab |
Week 10 | Lecture - Class Inheritance Exam - Final Exam (cumulative with focus on weeks 6 to 10) Lab - Developing a string Class (overloaded operators and copy constructors) |
Lecture Slides Lecture Slides Lab |