This course provides an introduction to tools found throughout computer science -- basic algorithms and data structures that lend themselves naturally to computational problem solving, as well as the problem of engineering computational efficiency in to programs. Students will gain an understanding of classical algorithms (including sorting, searching, tree and graph traversal), and data structures (including linked-lists, trees, graphs, hash tables, and heaps), and an introduction to parallel computing. Students will complete extensive programming assignments that require the implementation and testing of these concepts.
week | date | topic | exams |
1 | 1/13 & 1/15 | Introduction & Java review | |
2 | 1/20 & 1/22 | OO & generic programming | |
3 | 1/27 & 1/29 | Algorithm analysis & data structures | |
4 | 2/3 & 2/5 | Basic sorting | |
5 | 2/10 & 2/12 | Recursive sorting | |
6 | 2/17 & 2/19 | Linked lists | Midterm 1 on Tues |
7 | 2/24 & 2/26 | Stacks & queues | |
8 | 3/3 & 3/5 | Trees | |
9 | 3/10 & 3/12 | Graphs | |
spring break | |||
10 | 3/24 & 3/26 | Hash tables | Midterm 2 on Thurs |
11 | 3/31 & 4/2 | Binary heaps | |
12 | 4/7 & 4/9 | File compression | |
13 | 4/14 & 4/16 | Huffman compression | |
14 | 4/21 & 4/23 | Visualization | |
15 | 4/28 | Final exam review | Final exam on Thurs |
Tulasi Aravapalli | John Clukey | Jason Davis | Dasha Pruss | Hitesh Raju | Ryan Sargent | Cory Simon |
prerequisites | Students are expected to have a working knowledge of Java and to be able to complete the tasks required in CS1410. |
objectives |
The following are the expected outcomes for students completing this course:
|
textbook |
Data Structures & Problem Solving Using Java, 4th Edition. Mark Allen Weiss, Addison Wesley. (An eBook is available) |
clickers |
We will use Turning Technologies "clickers" for in-class participation. Lectures will contain questions which you will answer with your clicker. Clicker participation will count towards your grade. |
online resources |
Download:
Java SDK 7 Introduction to Programming Using Java C++
and Java Syntax Differences Cheat Sheet |
grading |
Grades in this course will be determined by:
Assignments consist of weekly programming assignments, most of which will be done in pairs of 2. The specifications these assignments will be posted online each week. The assignments will be due one week after they are released, with a one day late penalty of 10% -- assignments handed in more than one day late will not be graded. You will hand in your programs through Canvas. Partial credit may be given for incorrect programs, but it must be clear that a strong attempt was made. If your program does not compile or run, no credit will be given. Programs will be graded on readability, comments, and design of the code, as well as correctness in execution. Assignments will also consist of a written portion describing the design of the program, and documenting the performance of your code. All reports must be typed -- no scanned handwritten work will be accepted! The last assignment of the semester will be a comprehensive project lasting two weeks, in which you will design a solution to a problem from the ground up, with little or no framework given to you. You will have the freedom of selecting which algorithms and data structures are best suited to solving the problem, and designing a complete program around your solution. Midterm exams will be given during the regular class time in the regular class room. The final exam will take place on Thursday, April 30th from 10:30am-12:30pm in the regular class room. All exams are written exams. As an anti-cheating measure, students who fail the exams will fail the class regardless of their assignment scores. The class participation grade will be based on completion of lab exercises, clicker responses, and overall contribution to the class and labs. The final grade will be calculated from exams, programming assignments, written homework, and laboratory exercises. A's will be given to students within 90% of the best student, B's within 80%, C's within 70% etc. In the event that grading is too severe, I reserve the right to adjust grades upwards. |
getting help |
Every student will get stuck sooner or later. When you do, feel free to ask for help in person or through the class website. We are happy to help. In-person help is the most effective way to learn. Please make use of our office hours whenever possible. TAs will hold their office hours in the CADE lab, WEB L224 and WEB L226. When you arrive for TA hours, use the TA call queue to request TA help. NEW! As a pilot program we will be offering tutoring sessions in two forms -- 30 minute small group sessions, and 1 hour discussion sessions. The small group sessions are to help students understand the concepts covered in class and in the assignments. These sessions are aimed to help those who don't have programming background or who feel that they are lagging in the concepts as compared to their classmates. In these sessions you can discuss specific concepts that you are interested in with the TA, but not these sessions WILL NOT BE to debug your homework. Up to 3 students can sign up in single slot. In the discussion sessions we will discuss topics proposed by you. When you sign up for a discussion session slot you can propose topics for discussion by leaving a comment -- you must do this at least one day before the session. Discussion sessions will be with 10-12 students for an hour. Doodle pools for signing up for any of these sessions will be linked under the weekly lectures below. The student-to-student Canvas forum is where you should post simple questions for other students. If you'd like to find a study partner, if you discover something really cool, or if you just have a simple question, feel free to post to this forum. The only rule is that you are not allowed to discuss specific solutions to upcoming homework. For help from the teaching staff, use teach-cs2420@list.eng.utah.edu. Emails to this address will be sent to all of the teaching staff and you can expect to receive a response within 24 hours. For emails directed to me personally, I will read it quickly and respond as soon as possible, but I get thousands of emails each semester and you may not get a response. For time sensitive issues or issues that require a little more privacy, please talk to me immediately after class or come to my office hours. TA
call queue |
pair programming |
The majority of assignments will be completed in pairs -- each assignment specification will clearly state when work must be done individually or in pairs. When pair-work is required, students must adhere to the techniques of pair programming. Partners are required to contribute equally half of the work and problem solving required for each assignment. Students are encouraged to discuss high-level solution strategies with fellow classmates, but each student is responsible for writing her/his own answer. |
cheating policy |
Cheating is: sharing (outside of a partnership) written or electronic work either by copying, retyping, looking at, or supplying a copy. Cheating is not: discussing concepts, answering questions about concepts or clarifying ambiguities, or helping someone understand how to use the class tools and software. There must be no collaboration during tests or the final exam. There is a detailed policy that defines cheating for this course. Any student found cheating will fail the course. Supplying cheated materials is considered cheating just as using them is. School of Computing Policy Statement on Academic Misconduct |
reading | - Data Structures & Problem Solving Using Java,
Chapters 1 and 2. |
lab | - no (official) lab this week - please see the lecture slides for information on help sessions this Friday - Lab 0, Java refresher |
homework |
- Student survey, due Thursday, Jan
15th at 5pm - Proficiency exam - Assignment 1, due Thursday, Jan 22nd at 5pm |
slides |
- L01-intro.pdf - L02-java-review.pdf |
reading | - Data Structures & Problem Solving Using Java,
Chapters 3 and 4. |
lab | - no lab this week |
homework |
- Assignment
2, due Friday, Jan 30th at 11:59pm |
slides |
- L03-oop.pdf - L04-generics.pdf |
reading | - Data Structures & Problem Solving Using Java,
Chapters 5 and 6. |
lab |
- Lab
1: timing
experiments |
homework |
- Assignment
3, due Thursday, Feb 5th at 11:59pm |
tutoring |
- sign-up for small
group sessions, located in MEB 3423 - sign-up for discussion sessions, located in MEB 3485 |
slides |
- L05-algo-analysis.pdf - L06-collections.pdf |
reading | - Data Structures & Problem Solving Using Java,
Chapter 8.1 - 8.4. |
lab |
- Lab
2: testing |
homework |
- Assignment
4, due Thursday, Feb 12th at 11:59pm |
tutoring |
- sign-up for small
group sessions, located in MEB 3423 - sign-up for discussion sessions, located in MEB 3485 |
slides |
- L07-sorting.pdf - L08-sorting-part2.pdf |
reading | - Data Structures & Problem Solving Using Java,
Chapters 7, 8.5 - 8.8. |
lab |
- Lab
3: midterm 1 review |
homework |
- Assignment
5, due Thursday, Feb 19th at 11:59pm |
tutoring |
- sign-up for small
group sessions, located in MEB 3423 - sign-up for discussion sessions, located in MEB 3485 |
slides |
- L09-recursion.pdf - L10-merge-quick-sort.pdf |
demo code |
- L09.zip |
reading | - Data Structures & Problem Solving Using Java,
Chapter 17. - Open Data Structures (in Java), Chapter 3. |
lab | - no lab this week |
midterm | - Tuesday, in class |
homework |
- Assignment
6, due Thursday, Feb 26th at 11:59pm |
tutoring |
- sign-up for small
group sessions, located in MEB 3423 - sign-up for discussion sessions, located in MEB 3485 |
slides |
- L11-linked-lists.pdf |
reading | - Data Structures & Problem Solving Using Java,
Chapter 16. - Open Data Structures (in Java), Chapter 2. |
lab |
- Lab
4: debugging |
homework |
- Assignment
7, due Thursday, Mar 5th at 11:59pm |
tutoring |
- sign-up for small
group sessions, located in MEB 3423 - sign-up for discussion sessions, located in MEB 3485 |
slides |
- L12-stacks.pdf - L13-queues.pdf |
reading | - Data Structures & Problem Solving Using Java,
Chapters 18 and 19. - Open Data Structures (in Java), Chapter 6. |
lab |
- Lab
5: random number generation |
homework |
- Assignment
8, due Thursday, Mar 12th at 11:59pm |
tutoring |
- sign-up for small
group sessions, located in MEB 3423 - sign-up for discussion sessions, located in MEB 3485 |
slides |
- L14-trees.pdf - L15-bst.pdf - Ryan's slides, plus code |
demo code |
- L14.zip - L15.zip |
reading | Data Structures & Problem Solving Using Java,
Chapter 14. |
lab |
- Lab
6: BSTs |
homework |
- Assignment
9, due Monday, Mar 30th at 11:59pm |
tutoring |
- sign-up for small
group sessions, located in MEB 3423 - sign-up for discussion sessions, located in MEB 3485 |
slides |
- L16-graphs.pdf - L17-graphs2.pdf |
reading | - Data Structures & Problem Solving Using Java,
Chapter 20. - Open Data Structures (in Java), Chapter 5. |
lab |
- Lab
7: Midterm 2 Review |
midterm | - Thursday, in class |
homework |
- Assignment
10, due Thursday, Apr 2nd at 11:59pm |
tutoring |
- sign-up for small
group sessions, located in MEB 3423 - sign-up for discussion sessions, located in MEB 3485 |
slides |
- L18-hash-tables.pdf |
reading | - Data Structures & Problem Solving Using Java,
Chapter 21. |
lab |
- Lab
8: Hash Tables and BSTs |
homework |
- Assignment
11, due Friday, Apr 10th at 11:59pm |
tutoring |
- sign-up for small
group sessions, located in MEB 3423 - sign-up for discussion sessions, located in MEB 3485 |
slides |
- L19-binary-heap.pdf - L20-binary-heaps2.pdf |
reading | - Data Structures & Problem Solving Using Java,
Chapter 12. |
lab |
- Lab
9: Binary Heaps |
homework |
- Assignment
12, due Tuesday, Apr 21st at 11:59pm |
tutoring |
- sign-up for small
group sessions, located in MEB 3423 - sign-up for discussion sessions, located in MEB 3485 |
slides |
- L21-huffman.pdf |
reading | - Data Structures & Problem Solving Using Java,
Chapter 12. - A Tour through the Visualization Zoo. Jeffrey Heer, Michael Bostock, Vadim Ogievetsky. Communications of the ACM, 53(6), pp. 59-67, Jun 2010. |
lab | - cancelled |
tutoring |
- sign-up for small
group sessions, located in MEB 3423 - sign-up for discussion sessions, located in MEB 3485 |
slides |
- L22-huffman2.pdf - L23-visualization.pdf |
reading | - A
Tour through the Visualization Zoo. Jeffrey Heer, Michael
Bostock, Vadim Ogievetsky. Communications of the ACM, 53(6),
pp. 59-67, Jun 2010. - Processing tutorials. |
lab |
- Lab
10: Huffman Coding |
tutoring |
- sign-up for small
group sessions, located in MEB 3423 - sign-up for discussion sessions, located in MEB 3485 |
slides |
- L24-visualization2.pdf - L25-processing.pdf |
lab |
- Lab
11: Final Exam Review |
final | - Thursday at 10:30am |
slides |
- L26-wrap-up.pdf |