ICS 311 Algorithms (4 credits) Design and correctness of algorithms, including divide-and-conquer, greedy and dynamic programming methods. Complexity analyses using recurrence relations, probabilistic methods, and NP-completeness. Applications to order statistics, disjoint sets, B-trees and balanced trees, graphs, network flows, and string matching. Pre: 211 and 241, or consent.

- Students are aware of fundamental algorithms of computer science, and their associated data structures and problem solving techniques.
- Students can compose a problem formulation of a real-world problem mathematically.
- Students can decide whether given pseudocode is correct for a given problem formulation; construct a counterexample if the given pseudocode is incorrect; and outline a proof for its correctness otherwise.
- Students can design a correct algorithm for a given problem and describe the algorithm as pseudocode in a given pseudocode syntax.
- Students can analyze the worst-case and best-case space and time complexities of a given algorithm.

- An ability to apply mathematical foundations, algorithmic principles, and computer science theroy to the modeling and design of computer-based systmes

** Important:** Do not approach this course solely as a memorization task, where you can only do algorithms you
are trained to do, like a circus animal. We want you to learn a "catalog" of algorithms, but you
should also understand their analyses as examples that enable you to analyze unexpected algorithms
in the future. This is essential for being successful in a fast changing field where *you*
are expected to figure out whether a new idea will work, as * you * will be the computer
scientist hired to do this.

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein, Introduction to Algorithms, Third Edition, The MIT Press, 2009.

Students are advised to purchase the textbook, as this book will serve as a lifelong reference.
*It is the second most cited publication in computer science!*

**Students are expected to know the material from prerequisite courses: ICS 141, 241, 111, 211, which will be heavily used in this course**.
Students are advised to keep their ICS 241 (Discrete Mathematics
for Computer Science) textbooks for reference.

**Nodari Sitchinava**

Assistant Professor of ICS

- Office: POST 309C
- Office Telephone: (808) 956-3581
- Email: nodari@hawaii.edu (Put "ICS 311" in the subject line. Use Laulima for questions that may also apply to other students.)
- Office Hours: MW 3:30-4:30pm (in Webster 101).

**Kyle Berney**

PhD Student in ICS

- Office: POST 309
- Email: berneyk@hawaii.edu (Put "ICS 311" in the subject line.)
- Office Hours: Friday 11am-12:30pm (in POST 318B - ICSpace)

**Ben Karsin**

PhD Student in ICS

- Office: POST 309
- Email: karsin@hawaii.edu (Put "ICS 311" in the subject line.)
- Office Hours: Friday 11am-12:30pm (in POST 318B - ICSpace)

- Section 1: Mondays and Wednesdays 2:15-3:30 in Webster 101 and Tuesdays 4:30-5:20 in POST 319
- Section 2: Mondays and Wednesdays 4:30-5:45 in Webster 101 and Tuesdays 5:30-6:20 in POST 319

**Questions about Course Content**- In general, questions about course content such as concepts, clarifications of assignments, etc. should be posted to the Laulima discussion forum of the week. This is because (1) other students can see our responses there, and thus also benefit; and (2) other students may notice the question and answer before the instructor or TA notices it. If you email us a question, we will post the reply in Laulima unless personal information is involved.
**Personal Topics**- For topics that are not of interest to other students or are personal, you may email us, or stop by office hours. (Of course you may also use office hours for course content questions.) If using email, put "ICS 311" in the subject line.
**Communication with other students (e.g., group members)**- You can send email to other students in the course using the Laulima "Mailtool". You don't need to know their real email address to do this.

We use the **course website** www2.hawaii.edu/~nodari/teaching/s18/
for posting schedules and notes.

We use **Laulima** for all other online
required course functions such as podcasts, discussions. Please
see this document on
everything Laulima users should know.

We will use **Google Docs** for in-class problem solving, as it supports simultaneous
editing.

Screencasts (videos) of lectures are available on **YouTube** and
Laulima (your choice). They are linked from the individual Notes pages (the pages named Topic-XX.html).

Nodari Sitchinava (based on material by Dan Suthers)