CS208/204: Data Structures & {Abstractions, OOP}
Term III/2024–25
!! Important Announcement !!¶
Basic Information¶
This course aims to provide you with the skills and tools to confidently write efficient, maintainable, and correct programs.
-
Scheduled Class:
- Section 1: Tue 10 – 12:50pm and Thu 10 – noon. Instructor: Kanat Tangwongsan.
- Section 2: Mon 3 – 5:50pm and Wed 4 – 5:50pm. Instructor: Bundit Laekhanukit.
-
LMS: We're using Canvas. Look at the the onboarding instructions for a join code.
An Important Requirement
To enroll in this course, students must have taken or must be concurrently taking ICCS206: Discrete Mathematics.
Welcome to Data Structures & Abstractions. In this course, you will learn to design and implement well-structured Java programs using an appropriate combination of data abstractions, data structures, and algorithms. Furthermore, you will learn to mathematically analyze and empirically evaluate programs in terms of space and time, as well as proving that the programs work correctly as required.
Grading¶
Your final grade will be determined as follows:
- Assignments (8 sets) · 24%
- Paper-based Quizzes (4 quizzes) · 48%
- Coding Tests (2 tests) · 24%
- Class Activities · 4%
(The lowest assignment grade will be dropped.)
Academic Integrity¶
Students are expected to maintain the highest standards of academic integrity. Academic dishonesty will not be tolerated and will be reported to the Academic Dishonesty committee.
In this course, we interpret collaboration very liberally. Unless stated otherwise, you may work with other students. However, each student must write up and hand in his or her assignment separately. Let us repeat: you need to write your own code. You must not look at or copy someone else's code. The fact that you can recreate the solution from memory is taken as proof that you actually understood it, and you may actually be interviewed about your answers.
Quizzes & Mastery Exams¶
Most lessons will come with integrated exercises to make sure we are all on the same page. In addition to that, you will be tested regularly in the form of quizzes (~ every 3 weeks). Unless stated otherwise, each quiz will be ~ 45-min long at the beginning of a class. It is meant to test your understanding of concepts covered in class/problem sets. Therefore, if you know what's going on in class and can do the assignments yourself, you'll ease these quizzes.
The quizzes will be conducted online with no books, notes, or collaboration allowed.
Additionally, there will be two mastery exams. You are to attempt them on a computers.
Assignments¶
Each of your assignments may contain both a written portion and a coding portion. For the written portion, proofs will be judged according to their merit and style. For the coding portion, your work will be evaluated along four axes primarily:
- Scope To what extent does your code implement the features required by our specification?
- Correctness To what extent is your code consistent with our specifications and free of bugs? Did you write sufficient, high-quality tests?
- Design To what extent is your code written well (i.e., clearly, efficiently, elegantly, and/or logically)?
- Style To what extent is your code readable (e.g., commented and indented with variables aptly named)?
Late Assignments¶
Assignments are due electronically at 11:59PM Bangkok time unless otherwise stated on the assignment. You are encouraged to hand them in well ahead of the deadline.
You are allotted FIVE (5) late days for the term at no grade penalty. At most ONE (1) late day may be used per assignment. If you have used up these late days or used more than one for a given assignment, your submission will not be graded.
Except in extraordinary circumstances (e.g., a medical emergency), no late homework will be accepted beyond the late date.