COP 3530C-01 – Computer Science III - Spring 2005 Syllabus

4 downloads 3043 Views 53KB Size Report
The students will mainly learn static and dynamic data structures, ... Course Textbook: Hubbard, "Schaum's Outline of Data Structures with Java, 2ed ( Schaum's.
Kingdom of Saudi Arabia Ministry of Higher Education King Abdulaziz University College of Computing and Information Technology

‫اﳌﻤﻠﻜﺔ اﻟﻌﺮﺑﻴﺔ اﻟﺴﻌﻮدﻳﺔ‬ ‫وزارة اﻟﺘﻌﻠﻴﻢ اﻟﻌﺎﱄ‬ ‫ﺟﺎﻣﻌﺔ اﳌﻠﻚ ﻋﺒﺪ اﻟﻌﺰﻳﺰ‬ ‫ﻛﻠﻴﺔ اﳊﺎﺳﺒﺎت وﺗﻘﻨﻴﺔ اﳌﻌﻠﻮﻣﺎت‬

CPCS-204 Syllabus Data Structures I – Summer 2012 Course Prerequisites: CPCS 202 and CPCS 203 Class Time: SMW 7:30 – 9:10 AM Class Location: Building 31A, Room 1A Course Web Page: http://kau.cazalas.com/courses/cpcs204/sum2012/ Instructor: Dr. Jonathan (Yahya) Cazalas Office: Building 31A, Room 146 Email: [email protected] Office Hours: SMW from 9:15 AM to 10:15 AM Course Description: from the KAU catalog description, “This course is an introduction to data structures that intends to train students for problem solving by using simple data structures and developing algorithms. The students will mainly learn static and dynamic data structures, including arrays, linked lists, stacks, queues and trees. They will also learn some basic searching and sorting algorithms and algorithm analysis tools, particularly ‘Big O’.” For clarity, this class is a follow up to the CPCS-203 material, in which you learned (ideally) the syntax and use of major constructs of JAVA (conditional statements, loops, functions, arrays, pointers, strings, structures, and file I/O) as well as object-oriented programming. This course now focuses on the actual algorithmic design (i.e., how efficient are your algorithms), analysis of running time, a variety of abstract data types (new data structures), and lastly, but definitely not least important, recursion. Course Textbook: Hubbard, "Schaum's Outline of Data Structures with Java, 2ed (Schaum's Outline Series)", McGraw-Hill; 2edition (May 26, 2009). ISBN-13: 9780071611619. (While beneficial, this book is not necessary. The PPT slides, provided on the course website, are more than sufficient.) Lab Sessions: In addition to the main lecture, this course also includes a lab. One of the primary purposes of the lab is to reinforce and practice the information presented in the main lecture. Additionally, all programming assignments and projects will be done or assigned in the lab. For this reason, lab attendance is mandatory, with the labs counting as 25% of your final grade. Exams: There will be two midterm exams and one final exam. Students will be allowed one page (8-1/2" x 11" or smaller) of notes for the two midterms and two pages of notes for the final. However, calculators will NOT be allowed for any of the exams. As the material in this course builds on itself, each exam can be considered “cumulative”, and material from the beginning of the semester is certainly not off-limits for the 2nd Midterm. And of course, the Final exam is cumulative as well.

Quizzes: Quizzes will consist of a small number of basic questions on material that has been covered recently, with the goal of forcing students to keep up with the material. Quizzes will be announced in class or on the course web page, and they will be administered in class. If you miss class, then you will miss the quiz. There will be no makeup quizzes. It is your responsibility to go to class and pay attention for quiz announcements. Tentative Grading Procedures: The final letter grade will be based upon the five items listed below. Item Exam #1 Exam #2 Final Exam Quizzes Lab o Lab Assignments/Homework o Lab Exam

Percentage 15 15 35 10 25 (15) (10)

Other Important Course Policies: 1) The lab instructor is your main point of contact regarding the programming assignments and projects. If you have any questions at all regarding the assignments, solving the program, how to code it, syntax errors, you name it, contact the lab instructor or TAs (if applicable). You can also email them with your questions, but understand that they may not respond immediately. If you want help via email, start your assignment early. Finally, the TAs will be grading the assignments. Therefore, any and all questions you have regarding your grade should be directed to them. If you feel your grade was unfair and you were not satisfied after contact the lab instructor, please come to my office hours to discuss. 2) Cheating will not be tolerated. If a student is caught cheating, then the grade on that assignment for all students knowingly involved (the person providing answers as well as the one taking the answers) will be a -25%. (Note, this is less than 0%.) Since discussion of concepts with other students is often helpful, cheating must be more clearly defined. In particular, the following items are cheating: copying a segment of code of three lines or more from another student from a printout or by looking at their computer screen, taking a copy of another student's work and then editing that copy, and sitting side by side while writing code for assignments and working together on segments of code. In all of these situations, BOTH people responsible, the one from whom the three lines of code are taken as well as the person who takes those lines of code are engaging in academic misconduct. For example, if someone makes an electronic copy of their code accessible to ANYONE in the class (except for themselves) before 48 hours after an assignment is due, they are automatically culpable of academic misconduct. It does not matter if the recipient of the code doesn’t use it, uses it a little, or copies it directly. Furthermore, based on the severity of the case, the entire course grade for the student may be lowered an full letter grade, an "F" in the course, dismissal from an academic unit, revocation of admission, suspension from the university, etc.

If you get stuck on an assignment, please ask the lab instructor for help instead of getting help from another student. Part of the learning process in programming involves debugging on your own. In our experience, when a student helps another student with an assignment, they rarely allow the student getting help to "figure out" problems on their own. Ultimately, this results in a lack of debugging experience for the student receiving help. The goal of the lab instructor is to provide the facilitation necessary for students to debug and fix their own programs rather than simply solving their problems. But, you are encouraged to work together on any non-graded programs to enhance and expedite the learning process. 3) In order to take a make-up exam, you must request one from the instructor. The instructor will grant requests using his own judgment by applying the following general rule: "Make-up exams will only be given if the reason for missing the exam was out of the student's control." For example, being hospitalized unexpectedly is out of a student's control, but oversleeping or going to happy hour is not out of a student's control. If possible, it is recommended that the instructor be contacted before the exam. 4) The course web page will be a crucial element of the course. It is your responsibility to check the web page before every class meeting for any updates that may be posted. Additionally, some clarifications may only be given in class and won’t be posted online at all, so make sure you keep up with announcements in class. 5) Class Attendance. Class attendance is mandatory and will be taken at each class. If you miss more than 25% of the lectures, you will receive a DN.

Tentative Schedule for Lectures/Assignments ***Note: the following schedule is tentative. You should notice that the Exams are currently not on the schedule. Additionally, things will shift slightly as the Exam dates are finalized.

Week Dates

Saturday Class

Monday Class

Wednesday Class

1

June 16 - 20

No class.

Go over Syllabus + Intro PPT Slides

Arrays: Properties of any Array Java.util.Arrays class Duplicating an Array

2

June 23 - 27

Linear vs Binary Search + Sorted List Matching Problem

Linked Lists Intro: Traversing a list, counting elements in a list, printing a list, etc. + Linked List operations: Insertion into a list

Linked List operations: Deleting nodes from a List + Linked Lists Gone Wild: Circle and Doubly-Linked Lists

3

June 30 - Recursion 1: Intro to Recursion July 4 examples include count down, factorial, and Fibonacci

Recursion 2: General structure, sum numbers, power, reversing a string, multiply, & Towers of Hanoi

Recursion 3: Permutations + Recursion 4: Recursive Binary Search & Fast Exponentiation

4

July 7 - 11

Algorithm Analysis: Big-O notation, time complexity problems + Analyze code fragments and determine Big-O

Stacks – applications, evaluation of postfix expressions + array and linked list implementation of a stack

Queue Operations + array and linked list implementation of a queue

5

July 14 - 18

Trees, Tree definitions + Binary Trees, relation of height to number of nodes, tree traversals

Binary search tree, searching in a BST, insertion + Deletion in BST

More practice with Binary Search Trees

6

July 21 - 25

Sorting- selection sort, insertion sort, bubble sort

Merge sort + Quick Sort

Graphs: Introduction + Adjacency Matrix and Adjacency List representation of a graph

7

July 28 Aug 1

Review for Final Exam