Course Promises / Learning Objectives

By the end of the course, you will have developed the following knowledge and skills:

  • Understand the basic principles of object-oriented programming (OOP)
  • Learn how to implement OOP programs in C++.
  • Develop the skills to analyze the performance of algorithms in terms of big-O notation as well as prove an algorithm's correctness.
  • Understand the difference between an abstract interface and the implementation of that interface.
  • Describe a data structure as an abstract data type (ADT) and provide various implementations of that ADT in C++.
  • Develop the ability to compare and contrast the performance of data structures and algorithms.
  • Learn how to apply data structures and algorithms to solve problems of moderate complexity.
  • Develop scientific communication skills.

Student Responsibilities

I have outlined the skills and objects this course promises to provide you. For this promises to be upheld, you will need to commit towards the policies outlined below. CS35 is substantially faster-paced than CS21, covering a broad range of topics. To succeed you should:

  • Attend class.
    The primary introduction to course material is through class lecture. Additionally, we often do learning exercises during class, which give you immediate experience with the material we are covering. While I am more than happy to help with any material in office hours, priority will be given to students who attend and participate in lecture. Office hours are not to make up for missed lecture.
  • Come to lab prepared.
    Lab will introduce new content and be an opportunity to work in teams on paired assignments. Lab attendance is mandatory.
  • Participate actively in learning process.
    Showing up is necessary, but not sufficient to success in the course. To fully develop your analytical skills, you are expected to participate in class discussion. This includes asking questions during lecture portions and engaging your peers during short class exercises. Studies show active involvement is the number one determinant of student success.
  • Start the lab assignments early.
    I realize this one is not always easy to do, but if you can get in the habit of doing this, you will be much better off. As the labs get longer and more difficult, starting early will give you plenty of time to mull over the lab problems even when you aren't actively writing your solution.
  • Practice, practice, practice.
    The only effective way to learn the material and pass the quizzes and exams is to consistently do the labs.
  • Seek help early and often.
    Because course material builds on previous material, it is essential to your success in this class that you keep up with the course material.
  • Attend CS35 Study Sessions.
    The student Ninjas hold two evening study sessions each week. You are encouraged to participate in these sessions. The Ninjas will help you prepare for quizzes, will provide additional instruction in programming concepts, and will provide friendly assistance on your lab assignments.

Academic Integrity

Academic honesty is required in all your work. Under no circumstances may you hand in work done with (or by) someone else under your own name. Your code should never be shared with anyone; you may not examine or use code belonging to someone else, nor may you let anyone else look at or make a copy of your code. This includes, but is not limited to, obtaining solutions from students who previously took the course or code that can be found online. You may not share solutions after the due date of the assignment.

Discussing ideas and approaches to problems with others on a general level is fine (in fact, we encourage you to discuss general strategies with each other), but you should never read anyone else's code or let anyone else read your code. All code you submit must be your own with the following permissible exceptions: code distributed in class, code found in the course text book, and code worked on with an assigned partner. In these cases, you should always include detailed comments that indicates on which parts of the assignment you received help, and what your sources were.

Failure to abide by these rules constitutes academic dishonesty and will lead to a hearing of the College Judiciary Committee. According to the Faculty Handbook: "Because plagiarism is considered to be so serious a transgression, it is the opinion of the faculty that for the first offense, failure in the course and, as appropriate, suspension for a semester or deprivation of the degree in that year is suitable; for a second offense, the penalty should normally be expulsion."

We will routinely run plagiarism detection software on your lab assignment submissions.

The spirit of this policy applies to all course work, including code, homework solutions (e.g., proofs, analysis, written reports), and exams. Please contact me if you have any questions about what is permissible in this course.