This course provides an introduction to tools found throughout computer science - basic algorithms and data structures that lend themselves naturally to computational problem solving, and engineering computational efficiency into 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). Students will complete extensive programming assignments that require the implementation and testing of these concepts.
week | date | topic | homework | exams |
1 | 1/8 - 1/14 | Introduction & Java review | 01 | Matrices | solo | |
2 | 1/15 - 1/21 | OOP & generics | 02 | Generic Books | solo | |
3 | 1/22 - 1/28 | Algorithm analysis | 03 | Searching a List | TBD | |
4 | 1/29 - 2/4 | Basic sorting | 04 | Anagrams | pair | |
5 | 2/5 - 2/11 | Recursive sorting | 05 | Quicksort and Mergesort | pair | |
6 | 2/12 - 2/18 | Linked list, stacks, queues | 06 | TBD | TBD | |
7 | 2/19 - 2/25 | Midterm | Exam 1 on Thursday | |
8 | 2/26 - 3/4 | Trees | 07 | Binary Search Trees | pair | |
9 | 3/5 - 3/11 | Graphs | 09 | PacMan! Graph Search | pair | |
10 | 3/12 - 3/18 | Hash tables | 10 | Hash Tables | solo | |
11 | 3/19 - 3/25 | spring break | ||
12 | 3/26 - 4/1 | Binary heaps | 11 | Binary Heaps | solo | |
13 | 4/2 - 4/8 | Final project | 12 | TBD | pair | |
14 | 4/9 - 4/15 | Huffman compression | ||
15 | 4/16 - 4/22 | Ethics | 13 | TBD | TBD | |
16 | 4/23 - 4/29 | Wrap-up & review | Final on Apr 30th at 3:30pm |
prerequisites | Students are expected to have a working knowledge of Java and to be able to complete the tasks required in CS 1410. |
objectives |
The following are the expected outcomes for students completing this course:
|
textbook |
There is no required textbook for this course. We will recommend online sources throughout the semester. |
software |
We will use the web-based PollEverywhere software during lectures for asking and answering questions. At the start of each class we will provide the relevant URL. While not required, we encourage students to bring a web-enabled device to the lectures to make use this technology. |
videos of lectures |
We will be experimenting with live-streaming and recording of lectures via YouTube. You can find links for the videos in the weekly modules on Canvas. The videos are meant as an additional resource for you to review lecture content. They are not a substitute for attending lectures. BE AWARE: Our recording process WILL fail at some point during the semester, so do not rely on videos for receiving lecture content. |
online resources |
Download:
Java SDK 8
Java notes |
grading |
Grades in this course will be determined by:
Assignments consist of weekly programming assignments, some of which will be done in pairs. The specifications of these assignments will be posted online each week. The assignments will be due a week + a day after they are released, with the exception of the second and final assignments which will be due two weeks after release. ASSIGNMENTS WILL NOT BE ACCEPTED AFTER THE DEADLINE. NO EXCEPTIONS. You will hand in your programs through the course Canvas page. 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. If you wish to appeal a score on an assignment (or a test) must do so within one week of receiving the score and use the regrade request form posted on the class website. 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. Two exams will be given - one during the regular class time, and one during finals week. The in class exam will take place on Thursday, February 22nd, an the final exam will take place on Monday, April 30th from 3:30-5:30pm. 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 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%, B's within 80%, C's within 70% etc. We do, however, reserve the right to adjust this loose scale if need be. |
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. A complete list of ways to receive help is on Canvas. 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. If you have a question, especially about an assignment, check out the recent activity in Canvas discussion board. See if your question has already been asked (and possibly answered). If not, reply to a discussion already started for the current assignment or add a new discussion with an informative title. Your question will be answered by another student, a TA, or an instructor. Furthermore, the entire class will benefit from seeing this Q&A. Confine your posts to questions, concepts, and arranging study groups. When posting, do not post solutions to problems or share significant pieces of code. If you have a question that should not be read by the entire class, you can reach the course staff via email at teach-cs2420@list.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. Emails directed to Drs. Meyer and Parker personally will be read as quickly as possible. However, we get thousands of emails each semester and you may not get an immediate response. For time sensitive issues or issues that require a little more privacy, please talk to the teaching staff immediately after class, come to office hours, or use one of the methods described above. TA
call queue |
inclusivity |
It is our intent that students from all diverse backgrounds and perspectives be well-served by this course, that students' learning needs be addressed both in and out of class, and that the diversity that the students bring to this class be viewed as a resource, strength and benefit. It is our intent to present materials and activities that are respectful of diversity: gender identity, sexuality, disability, age, socioeconomic status, ethnicity, race, nationality, religion, and culture. We also except students to treat others in the class, including the teaching staff, with the same level of respect. Your suggestions on how we can make the course more inclusive and welcoming are encouraged and appreciated. You can give us feedback in person during office hours, or through our anonymous form. We take incidents of discrimination, bias, and harassment seriously. We will file reports with the Office or Equal Opportunity, Affirmative Action, and Title IX (OEO) about such incidents. If you are unsure what differentiates free speech and professional behavior from discrimination, bias, and harassment we are happy to have an open, judgement-free, and confidential conversation with you, or refer you to the OEO.
U
of U Inclusivity Statement |
pair programming |
About half of the 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. Note that the teaching staff will not answer questions on pair programming assignments unless both partners are present. |
cheating policy |
Cheating is: sharing (outside of a partnership) written or electronic work either by copying, retyping, looking at, or supplying a copy. And by copy, we mean a copy that belongs to someone else, or your own copy from a previous instantiation of this course. 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. |
soc and coe guidelines |
Students taking courses in, or seeking degrees from, the School of Computing (SoC) and the College of Engineering (CoE), must be aware of their guidelines and policies. School of Computing GuidelinesCollege of Engineering Guidelines |