DSAL T.3/2025
ICCS209: Data Structures & Algorithms
Basic Information
This course aims to provide you with the skills and tools to confidently write efficient, maintainable, and correct programs. You will learn to design and implement well-structured Kotlin programs using an appropriate combination of data abstractions, data structures, and algorithms. You will also learn to mathematically analyze and empirically evaluate programs in terms of space and time, and to argue that your programs work correctly.
- Scheduled class: TBD — meeting times and rooms to be announced.
- Instructor: Kanat Tangwongsan.
- LMS: Canvas. The join code is listed in the onboarding instructions.
To enroll in this course, students must have taken or be concurrently taking ICCS206: Discrete Mathematics.
Grading
Your final grade will be determined as follows:
- Assignments (8 sets) · 21%
- Paper-based quizzes (4 quizzes) · 36%
- Coding tests (2 tests) · 20% + 20%
- Class activities · 3%
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.
Collaboration is interpreted liberally: unless stated otherwise, you may work with other students. However, each student must write up and submit their own work separately. You must not look at or copy someone else's code. The ability to recreate a solution from memory is taken as proof that you actually understood it — and you may be interviewed about your answers.
AI Policy
Generative AI can be used to help you learn. Submitting AI-generated code or solutions is prohibited. You must understand and be able to reproduce every element of what you hand in.
- ❌ Prompt AI to solve a whole task for you.
- ❌ Ask AI to fix bugs automatically.
- ✅ Prompt AI to guide you so you can make progress — but you write the code yourself.
- ✅ Prompt AI to suggest improvements to your code or solution.
- ✅ Prompt AI to explain ideas or test your understanding.
Quizzes & Mastery Exams
Most lessons come with integrated exercises to keep us on the same page. Beyond those, you will be tested regularly through quizzes (roughly every three weeks). Unless stated otherwise, each quiz is about 50 minutes long at the start of class and tests your understanding of concepts covered in lectures and problem sets. If you keep up with class and do the assignments yourself, the quizzes should follow naturally.
Quizzes are conducted with no books, notes, or collaboration allowed. In addition, there will be two mastery exams, which you attempt on a computer.
Assignments
Each assignment may contain both a written portion and a coding portion. Written work — including proofs — is judged on merit and style. Code is evaluated along four axes:
- Scope. To what extent does your code implement the features required by the specification?
- Correctness. To what extent is your code consistent with the specification and free of bugs? Did you write sufficient, high-quality tests?
- Design. To what extent is your code written well — clearly, efficiently, elegantly, logically?
- Style. To what extent is your code readable — commented, indented, aptly named?
Late Assignments
Assignments are due electronically at 11:59 PM Bangkok time unless stated otherwise. 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 run out of late days, or use more than one on a given assignment, that submission will not be graded. Except in extraordinary circumstances (e.g. a medical emergency), no late homework will be accepted beyond the late date.