Course Syllabus

CS 235 provides a hands-on introduction to data structures and algorithms. Through programming projects and exams, you learn how to select and implement suitable data structures for various problems, how and when to use recursion, and how to analyze the cost of algorithms, especially sorting and searching algorithms.

Learning Outcomes

  • Fundamental data types used in computing (lists, stacks, queues, priority queues, sets, maps, binary trees, trees, etc.)
  • Common techniques for implementing the fundamental data types (sequential structures, linked lists, binary search trees, hash tables, heaps, etc.) and the implementation(s) of several of them
  • Proper use and selection of data structures from language-provided data-structure libraries
  • Basic algorithmic analysis
  • Recursion
  • Making informed decisions related to sorting and searching algorithms
  • Writing programs that require ~500 lines of code

Prerequisites

Successful completion of CS 142 (or an equivalent course) including proficiency in the C++ programming language

Book

We will use the materials provided in the Canvas Modules for most of the class.  You will be responsible for reading the materials associated with each module.  We suggest that you purchase the book "Objects, Abstraction, Data Structures and Design: Using C++" by Koffman.  The Kindle version is reasonably priced.  Some of the examples used in the class will come from the student resources provided with the book. You can find the code from the book here.

Course Content

You should complete the following activities in this course, which are designed to help you to learn the course material:

  • Exams:            40%
  • Projects:          45%
  • Assignments:  10%
  • Free Coding:     5%

Exams
Exams consist of a Midterm (20%) and a comprehensive Final (20%). The Midterm is given in the testing center. The Final is given in class at the time scheduled by the university.  The exams are designed to help you determine how well you have learned the course content related to the courses learning outcomes.

Projects (Assigned Coding)
There will be 9 programming projects assigned throughout the semester.  To receive full credit on the projects, you must satisfy all requirements given in the project specification.  All projects must be implemented in C++.  Typically, projects will be auto-graded, such that you will know your grade before you submit it.  However, the TAs will review code for completeness to ensure that all requirements are met.

The goal of the course is for you to begin to become a self-reliant programmer.  However, it is likely that you will need help along the way.  So please consult the instructor, TAs, and classmates as you work on these assignments.  You are free to work with others in or out of the class, consult with TAs, and consult the internet.  However, if you work with others (encouraged!) or consult the internet (encouraged!), you should ask yourself the following question before submitting: Do I have the skills and knowledge to complete a similar project/homework all by myself without learning more?  If the answer is “no” or you are not certain, you might consider waiting until you can answer “yes” before submitting the project.

Projects are due on the posted due date.  Unless stated otherwise, there is a 6-day grace period after the due date during which projects can still be submitted for full credit (calendar days -- these days include weekends and holidays).  After the 6-day grace period, projects can still be submitted for up to two weeks after the posted due date. Submissions received after the grace period will receive a 25-point penalty (projects are worth 100 points each).  Projects received more than two weeks after the posted due date will not receive credit.  An exception to the above policy is that no work will be accepted after the last TAs leave on the last day of class.

Assignments
In addition to lab projects (which are designed to develop and test your ability to write computer code) and exams (which are designed to test your ability to understand "the doctrine" of computer science), there will also be a series of smaller short homework, etc. to help reinforce concepts we talk about in class, help you prepare for the exams, and to help the instructor understand how things are going for you in CS235.

You may and are encouraged to work with other students as you do the assignments.  However, do not simply copy their answers.  If you work with others or consult the internet or anything else to help you complete an assignment, please ask yourself the following question before submitting: Do I understand how to do the assignments such that I could do similar problems all by myself?  If the answer is “no” or you are not certain, you might consider waiting until you can answer “yes” before submitting the assignment.

Free Coding
While the programming labs are hopefully enjoyable (in a nerdy sort of way) and insightful, nothing can make up for just coding for the thrill of it.  Thus, as part of this course, you will be expected to write some code of your own choice.  To get this credit, you'll submit a short write-up describing what you have written.

Grading

The value of this course lies in what you learn and the capabilities you develop from participating in it. Regrettably, the world we live in requires grades, so you will be graded. Regardless, you are encouraged to focus on learning rather than on your grade (you'll enjoy the class much more that way).  We have tried to design the course so that grades will correlate with what you learn and the capabilities you gain, but that isn't always possible.   Letter grades will be computed as follows:

Name:
Range:
A
100 %
to 93.0%
A-
< 93.0 %
to 90.0%
B+
< 90.0 %
to 87.0%
B
< 87.0 %
to 83.0%
B-
< 83.0 %
to 80.0%
C+
< 80.0 %
to 77.0%
C
< 77.0 %
to 73.0%
C-
< 73.0 %
to 70.0%
D+
< 70.0 %
to 67.0%
D
< 67.0 %
to 64.0%
D-
< 63.0 %
to 60.0%
E
< 60.0 %
to 0.0%

The instructor reserves the right to lower the grading scale (e.g., the range for an A grade could be lowered to 92-100 rather than 93-100), but will not raise it.  In other words, any adjustment to the table above would not decrease anyone's letter grade.

Cheating

Do not cheat, but do engage with others to learn!  As a general rule, you are allowed to work with others on projects and homework.  However, you should not simply copy their work, or anything like unto it.  If you work with others (encouraged!) or consult the internet (encouraged!) as you work on these activities, you should ask yourself the following question before submitting: Do I have the skills and knowledge to complete a similar project/homework all by myself without learning more?  If the answer is “no” or you are not certain, you might consider waiting until you can answer “yes” before submitting the project.

University Policies

Honor Code

In keeping with the principles of the BYU Honor Code, students are expected to be honest in all of their academic work. Academic honesty means, most fundamentally, that any work you present as your own must in fact be your own work and not that of another. Violations of this principle may result in a failing grade in the course and additional disciplinary action by the university. Students are also expected to adhere to the Dress and Grooming Standards. Adherence demonstrates respect for yourself and others and ensures an effective learning and working environment. It is the university's expectation, and every instructor's expectation in class, that each student will abide by all Honor Code standards. Please call the Honor Code Office at 422-2847 if you have questions about those standards.

Preventing Sexual Misconduct

As required by Title IX of the Education Amendments of 1972, the university prohibits sex discrimination against any participant in its education programs or activities. Title IX also prohibits sexual harassment-including sexual violence-committed by or against students, university employees, and visitors to campus. As outlined in university policy, sexual harassment, dating violence, domestic violence, sexual assault, and stalking are considered forms of "Sexual Misconduct" prohibited by the university.

University policy requires any university employee in a teaching, managerial, or supervisory role to report incidents of sexual misconduct that come to their attention through various forms including face-to-face conversation, a written class assignment or paper, class discussion, email, text, or social media post. If you encounter Sexual Misconduct, please contact the Title IX Coordinator at t9coordinator@byu.edu or 801-422-2130 or Ethics Point at https://titleix.byu.edu/report (Links to an external site.)Links to an external site. or 1-888-238-1062 (24-hours). Additional information about Title IX and resources available to you can be found at http://titleix.byu.edu (Links to an external site.)Links to an external site..

Student Disability

Brigham Young University is committed to providing a working and learning atmosphere that reasonably accommodates qualified persons with disabilities. If you have any disability which may impair your ability to complete this course successfully, please contact the University Accessibility Center (UAC), 2170 WSC or 422-2767. Reasonable academic accommodations are reviewed for all students who have qualified, documented disabilities. The UAC can also assess students for learning, attention, and emotional concerns. Services are coordinated with the student and instructor by the UAC. If you need assistance or if you feel you have been unlawfully discriminated against on the basis of disability, you may seek resolution through established grievance policy and procedures by contacting the Equal Employment Office at 422-5895, D-285 ASB.

Course Summary:

Date Details Due