Skip to content

Roland-spec/csc211-summer2024

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CSC 211 - Computer Programming (Summer 2024)

Course Instructors

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

Course Overview

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.

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)

Required Textbooks

Lab Sessions

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

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.

IDE Selection

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

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.

Grading

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]

Academic Enhancement Center

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.

Academic Honesty

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.

Anti-Bias Syllabus Statement

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.

Disability Services for Students Statement

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.

Religious Holidays

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.

Tentative Course Outline:

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages