Skip to content

AdamChanski/CSC211-Spring2020

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CSC 211 - Object Oriented Programming (Spring 2020)

Course Instructors

Instructor: Michael Conti (michaelconti@uri.edu), Tyler 137

Teaching Assistants: Christian Esteves, John Bertsch, Rodrigo Pimentel, Tanner Lindsay, Jordan Coats

Office Hours Schedule
Location: Tyler Hall ~ Third (top) Floor Lounge

Day Staff Member Time
Monday Tanner 12:30p – 2:30p
Tuesday Christian
Rodrigo
11:00a – 2:00p, 3:15p – 5:00p
12:30 - 2:00pm, 3:15p - 5:00p
Wednesday Christian
Tanner
12:00p - 4:15p
10:00a – 12:00p
Thursday Michael
Christian
Rodrigo
10:00a - 11:00a (Tyler 137)
11:00a - 2:00p
12:30p - 1:30p
Friday Tanner 11:00a - 12:00p

Discussion Session
Location: Swan Hall ~ rm305

Attending 80% of discussion sessions will earn you an additional 5pts on your final exam.

Day Staff Member Time
Tuesday Christian 5:00p – 6:00p
Wednesday Christian 4:20p – 5:20p

Lab
Location: Engineering ~ rm045

Day Staff Member Time
Monday John, Jordan, Tanner 3:00p – 4:45p
Thursday Rodrigo, Jordan, Christian 3:30p – 5:15p

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 5%
Programming Assignments ~8 25%
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 [94-100] A- [90-93] B+ [87-89] B [83-86]  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

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

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.

Disability Accommodations

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.

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
Lab - Hello 211, IDE Setup, Basic Shell Commands
Reading - Savitch, Chapter 1
Lecture Slides
Week 2 Lecture - Problems/Algorithms/Programs, History of C++, The Compiler
Lecture - C++ Basics, Input/Output, Data Types, Expressions
Lab - Algorithms, Problem Design, Pseudo-code Exercises
Reading - Savitch, Chapter 2
Lecture Slides
Lecture Slides
Lab
Assignment00
Week 3 Lecture - Number Systems, Further look into DataTypes
Lecture - Expressions, Selection Statements
Assignment - Assignment 0
Lab - Programming Exercises (branching)
Reading- Savitch, Chapter 3
Lecture Slides
Lecture Slides
Lab
Week 4 Lecture - Introduction to Loops (for)
Lecture - Loops (while, do while) and Nested Loops (examples)
Assignment - Assignment 1
Lab - Programming Exercises (loops and nested loops)
Reading- Savitch, Chapter 3
Lecture Slides
Lecture Slides
Lab
Week 5 Lecture - Functions
Lecture -Scope of Variables, Parameter passing, Call Stack
Lab - Using the Debugger, Programming Exercises (functions)
Reading - Savitch, Chapter 4
Reading - Savitch, Chapter 5
Lecture Slides
Lecture Slides
Lab
Week 6 Lecture - Arrays, Arrays and Functions
Exam - Midterm Exam (weeks 1 to 5)
Lab - Strings (C style strings and string objects)
Assignment - Assignment 2
Reading - Savitch, Chapter 7
Reading - Savitch, Chapter 8
Lecture Slides
Lecture Slides
Lab
Week 7 Spring Break None
Week 8 Lecture - Basic Sorting
Lab - Basic sorting algorithms
Lecture Slides
Lecture Slides
Lab
Week 9 Lecture - Multidimensional Arrays
Lecture - Pointers
Lab - Programming Exercises (pointers)
Reading - Savitch, Chapter 9
Lecture Slides
Lecture Slides
Lab
Week 10 Assignment - Assignment 3
Lecture - Recursion and Examples
Lecture - Recursion (cont.) and Examples
Lab - Programming Exercises (tracing recursion, drawing recursion trees)
Lecture Slides
Lecture Slides
Lab
Week 11 Lecture - Binary Search
Lecture - Advanced Recursion (Backtracking), Structs
Lab - Advanced Recursive Problems
Lecture Slides
Lecture Slides
Lab
Week 12 Assignment - Assignment 4
Lecture - Classes, Data Members and Methods (Encapsulation)
Exam - Midterm Exam (weeks 6 to 10)
Lab - Implementing Classes (source/headers), Arrays and Objects
Lecture Slides
Lecture Slides
Lab
Week 13 Lecture - Constructors
Lecture - Dynamic Memory Allocation, Destructors
Lab - Developing a string Class (overloaded operators and copy constructors)
Reading - Savitch, Chapter 14
Lecture Slides
Lecture Slides
Lab
Week 14 Lecture - Class Inheritance
Lecture - Singly Linked Lists
Lab - STL Containers, read/write from files, and CLAs
Reading - Savitch, Chapter 15
Lecture Slides
Lecture Slides
Lab
Week 15 Exam - Final Exam (cumulative with focus on weeks 11 to 15) None

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published