CSci 133: Spring 2025 Syllabus


Instructor details

Instructor Andy Clifton
Email aclifton@fullcoll.edu
Student (office) hours Mon/Tues 8:15 — 9:15 AM
Wed 8:15 — 9:00 AM
Mon 2:00 — 2:45 PM
Thurs 3:15 — 4:45 PM
Office Room 611-03
Office phone 714-992-7418
Website Instructor website
Tutoring Lounge hours Wed/Thurs 2:00 — 3:00 PM

(If you contact me by email I will try to reply the same day, but it may be up to a few days, depending on circumstances.)

Course details

CourseCSci 133, Data Structures in C++ (21313), 4 units
Room622A (600 building, 2nd floor)
PrerequisiteCSci 123 with a grade of ‘C’ or better.
Website Course Website
ScheduleMon/Wed 9:30 – 11:35 AM
TextData Abstractions and Problem Solving with C++, Frank M. Carrano
(the bookstore has a custom edition, but 7th, 6th, or 5th will work, too)
Last day to drop (without a ‘W’)Feb 17
Last day to withdrawMay 4
Final examMay 28, 9:30 AM

Student Learning Outcomes: Design and implement Abstract Data Types in C++ to write computer programs that use classic data structures and algorithms.

Course Description

“This is a course in algorithm design and data structures implemented using C++. Data structures examined are arrays, linked lists, stacks, queues, trees, tables, and graphs. Algorithm topics include hashing, sorting, heaps, searches and algorithm efficiency using Big-O notation. Students will create and modify class libraries to implement these structures.”

Grading

This course will use a system known as specifications grading. The content of the course will consists of eight “modules”. Modules are roughly independent of each other, but we’ll cover them in the order presented below. Each module will have a few assignments pertaining to it.

To earn a grade of ‘C’ in this course you must:

A note about midterms: midterm exams are cumulative, in the sense that each midterm includes problems pertaining to all the modules which have been covered so far. However, once you pass a module on a midterm, you do not need to pass it again on any later midterms. You can safely ignore problems for that module on all subsequent midterms. (On the other hand, if you fail a module on a midterm, there is no penalty as long as you pass it on some later midterm.) In other words, to truly fail a module on the midterms, you must fail it on every midterm. The final exam is just the final midterm, including all the topics covered.

To earn a grade of ‘B’ you must complete all the requirements for a ‘C’, and also

To earn a grade of ‘A’ you must complete all the requirements for a ‘B’, and also

You don’t need to “match up” the assignments and modules you pass; i.e., any 6 assignments and 6 modules will earn you an B.

NOTE: We may not have time to cover all eight modules; in that case, I will adjust things so that you still have the same chance of passing the necessary number of modules.

Module Assignments

All module assignments are graded pass-fail, on a “professional quality” standard. It is not sufficient for your program to merely ‘run’. Your submissions must both work — solve the problem assigned — but also be written in a manner that would not get you fired or yelled at on the job. This means clean, clear code, following the coding standards, good commenting practice, etc. Each module has one assignment.

Generally speaking, when you submit an assignment I’ll either accept it (pass) or not (fail). If I don’t accept it, it’s up to you whether you want to resubmit it with corrections (see above for how you don’t necessarily have to complete all the assignments). Resubmission should also include a change log, listing the changes you’ve made, as described in the coding standard.

All assignments except 5 have test runners, written by me, which will test your code and tell you whether your implementation is correct. To use the test runner, you must use exactly the interfaces described in the assignment (function names, class names, parameter types, etc.) and you must not define a main (the test runner defines it for you). Then, link your assignment source files assign1.cpp, stuff.cpp, etc. with the test runner for that assignment.

All assignments must have their history tracked in Git; there must be a Git repository (.git) in the assignment subdirectory containing your edit history for that assignment. Use of Git to track changes to source code will be covered in class.

Please note: when I test your assignment, I will use the “stock” version of the test runner code. This means that any modifications you have made to the test runner code will be lost when I test it. Sometimes students submit an assignment in which they have simply added their code to the end of the test runner; that won’t work, because the first thing I do when testing is to replace your copy of the test runner with the standard one. Place your code in separate .cpp/.hpp files.

If your submission produces a errors when linked with the test runner, that is an automatic fail. Similarly, if the test runner finds any errors, or crashes at any time, that is a fail.

Modules

  1. C++/CSci 123 review. How to write code in C++, how to use classes, how to use the standard library.

  2. The vector data structure and asymptotic analysis. Other fundamental data structures: lists, stacks, queues.

  3. Sorting and searching.

  4. Binary search trees, maps, balanced trees.

  5. Hashing and hash tables. Hash functions and applications.

  6. Binary heaps and disjoint sets

  7. Graphs, directed-acyclic graphs, graph algorithms

  8. Advanced topics: multithreading, parallelism, networking, or whatever else we want to talk about.

Calendar

Date Subject Assignment
Week 1
Mon, Feb. 03 Course intro; C++ review ‘Assignment 0’ — General notes on all assignments
Wed, Feb. 05 C++ review continued
Week 2
Mon, Feb. 10 Basic algorithmic analysis Assignment 1
Wed, Feb. 12 Amortized analysis; vectors and push_back
Week 3
Mon, Feb. 17 Presidents’ Day Holiday
Wed, Feb. 19 Doubly- and singly- linked lists; list algorithms and complexity
Week 4
Mon, Feb. 24 Linked lists continued
Wed, Feb. 26 Stacks and queues; deques Assignment 2
Week 5
Mon, Mar. 03 Midterm 1 review Midterm 1 Practice Test
(Solutions)
Wed, Mar. 05 Midterm 1
(Lecture source code to-date)
Week 6
Mon, Mar. 10 Midterm 1 recap (may be postponed)
Wed, Mar. 12 Recursion
Week 7
Mon, Mar. 17 Sorting algorithms: quadratic and subquadratic algo.
Wed, Mar. 19 Subquadratic sorting; Maps: binary search trees
Week 8
Mon, Mar. 24 Balanced trees: AVL and splay trees
Wed, Mar. 26 More balanced trees Assignment 3
Week 9
Mon, Mar. 31 Cesar Chavez Holiday
April 1 – 4 Spring Break Recess
Week 10
Mon, Apr. 07 More balanced trees
Wed, Apr. 09 Midterm 2 review
Week 11
Mon, Apr. 14 Midterm 2 Assignment 4
Wed, Apr. 16 Midterm 2 recap Midterm 2 Practice Test
(Solutions)
Week 12
Mon, Apr. 21 Hashing and hash tables
Wed, Apr. 23 Hashing continued
Week 13
Mon, Apr. 28 Heaps: priority queues and heap sort
Wed, Apr. 30 Disjoint sets
Week 14
Mon, May. 05 Midterm 3 review
Wed, May. 07 Midterm 3
Week 15
Mon, May. 12 Graphs; graph representations; directed acyclic graphs
Wed, May. 14 Graph algorithms: depth-first and breadth-first search
Week 16
Mon, May. 19 Advanced Topics: Parallelism and Multithreading
Wed, May. 21 Midterm 4 Review
Week 17
Mon, May. 26 Memorial Day Holiday
Wed, May. 28 Midterm 4/Final exam


Collaboration and Cheating

Computer science is a fundamentally collaborative subject, thus it’s not surprising that you will want to work together and help each other. While this is expected and allowed, the grade you are assigned at the end of the semester is intended to reflect your individual knowledge, not the compound knowledge that is formed when you and some friends and the internet/ChatGPT get together.

Cheating is defined as attempting to get course credit for anything other than your own original work. Examples include (but are not limited to):

Cheating on any test/assignment will result in a grade of 0 for that test/assignment. For tests, you may attempt to make up the missing modules on a later exam; for assignments, no makeup is allowed. Note that this means cheating on an assignment will effectively reduce your grade by one letter. I may also report cheating to the relevant college systems, which may result in you being placed on academic probation, or in extreme cases, being expelled.

If I am not certain that your submissions are your own original work, I reserve the right to ask you to explain your answers to me; if you cannot show that you understand your own answers, I will assume that they are not your answers.

The college’s official policy on cheating and student behavior is as follows:

Academic Honesty Policy

Students are expected to abide by ethical standards in preparing and presenting material which demonstrates their level of knowledge and which is used to determine grades. Such standards are founded on basic concepts of integrity and honesty. These include, but are not limited to, the following areas:

Instructors may deal with academic dishonesty in one or more of the following ways:

  1. Assign an appropriate academic penalty such as an oral reprimand or point reduction.
  2. Assign an “F” on all or part of a particular paper, project, or exam.
  3. Report to the appropriate administrators, with notification of same to the student(s), for disciplinary action by the College. Such a report will be accompanied by supporting evidence and documentation.

Repeated violations may result in students receiving an “F” in the course, suspension or dismissal from the College.

Standards of Student Conduct and Discipline Policy

The standards of student conduct and disciplinary action for violation of Board Policy 5500 were approved by the NOCCCD Board on January 28, 2003, and were drawn in compliance with Sections 66300, 76030, 76033, 76034, 76036 of the State Education Code. Students are expected to respect and obey civil and criminal law and shall be subject to the legal penalties for violation of the city, county, state, and national law(s). Student conduct must conform to Board Policy and college regulations and procedures. As cited in BP5500, “A student who violates the standards of student conduct shall be subject to disciplinary action including, but not limited to, the removal, suspension or expulsion of the student.”

Students have an obligation to familiarize themselves with the College’s policies, rules and regulations and to conduct themselves in a reasonable, respectful manner, which is conducive toward attaining their educational goal. Upon registration, each student should obtain a copy of the College Policies and Regulations: Standards of Student Conduct and Discipline Policy. Contained therein are the policies approved by the Board of Trustees governing student behavior and the applicable penalties for violations of these policies. Copies are available in the Student Affairs Office, the Office of Equity and Diversity, all division offices, and the Student Services office.

Student Complaints

Students should attempt to resolve issues directly with the faculty or staff member involved in the complaint. For serious or ongoing complaints, students may file a formal Student Complaint. The process for doing so is described in the Catalog.

Other college policies

Various other college policies, which I am required to present to you, are as follows:

I am committed to creating a course that is inclusive in its design. If you encounter barriers, please let me know as soon as possible so that we can determine if there is a design adjustment that can be made or if a disability accommodation might be needed to overcome the limitations of the design. I am always happy to consider creative solutions as long as they do not compromise the intent of the assessment or learning activity. You are welcome to contact the Disability Support Services (DSS) Office to begin this conversation or to establish disability accommodations for this or other courses. DSS can be contacted at 714.992.7099 or dsp@fullcoll.edu. I welcome feedback that will assist me in improving the usability and experience for all students.

Americans with Disabilities Act (ADA) Statement

Fullerton College is committed to providing educational accommodations for students with disabilities upon the timely request by the student to the instructor. Verification of the disability must also be provided. The Disability Support Services office functions as a resource for students and faculty in the determination and provision of educational accommodations.

Fullerton College Catalog and Class Schedule

The Fullerton College Catalog and the Class Schedule contain a number of policies relating to students that are important to you. Please be sure that you have read these publications thoroughly. You may purchase copies of these publications at the campus bookstore, or you may read them online at the Fullerton College website, www.fullcoll.edu.

Grade Appeals

While the instructor is the final authority in determining grades that are assigned to students and that appear in their permanent record, students have a right to inquire how their grade was determined, and a Grade Appeal Procedure is described in the Catalog.

Wait Time for Late Instructors

If, due to unforeseen emergencies, the instructor does not arrive at the scheduled start time for class, students are to wait for fifteen minutes (unless otherwise notified by the division). If they do not receive notification to wait for their instructor to arrive, after 15 minutes the students may leave with no penalty for absence or assigned work due for that class meeting.

COVID-19 POLICIES AND PROCEDURES

If a student contacts their instructor and reports that they are: confirmed positive, awaiting results, or may have been exposed to COVID-19, the instructor is required to report this to the Dean and Director of Health Services for possible follow up and contact tracing.