-->

 


    

 

 California State University Dominguez Hills - Department of Computer Science

  Home  |  Syllabus  |  Course Outline  |  Homework  |  Lecture Notes  |  Tests  |  Programs  |  Contact  | 

 CSC 311- 01                                     Data Structures                                             Spring 2015

 

 

THE URL OF THIS PAGE IS http://csc.csudh.edu/suchenek/CSC311/outline.htm


The contents of this website, the links contained therein directly and indirectly, and the contents of the said links, are copyrighted. They are provided exclusively for non-profit educational use by the students currently enrolled in this course and for the duration of this semester. No other use or any use by others is allowed without authorization of the professor in this course and copyright holder or holders. No videotaping or recording without professor's prior permission is allowed in class.



Course Outline

OPTIMAL METHOD OF STUDY


Although the lecture covers most of the required material, in addition to regular class attendance you are expected to read the covered sections of the textbook before and after they are discussed in class. Moreover, it is recommended that at the beginning of semester you read or scan through the course text lightly from cover to cover. It is suggested that you examine the table of contents of the textbook next. This provides a logical overview of the course from the author's perspective. When you begin your course of study, always read the introduction at the start of each chapter before you read the chapter itself. Do not skip the Exercises section. Following the above recommendations will allow you to achieve your goal in this course (e.g., a desired final grade) with less effort.


COURSE OVERVIEW

Despite its mathematical content, this is a practical course with emphasis on programming in a ``very high level programming language": Abstract Data Types, and their object-oriented implementations. It assumes a previous introduction and knowledge of college-level algebra and calculus, discrete mathematics (particularly important), and skill in programming in Java. In addition to practical knowledge of advanced programming, this course will give you an insight into contemporary methods and techniques of algorithms' analysis. You will also learn a number of classic algorithms and their data structures the knowledge of whose is considered fundamental for any person with a college degree in Computer Science. I hope you will find the subject fun to study.


SUBJECT AREAS OF EMPHASIS


After passing this course you should have a solid knowledge of programming in Abstract Data Types, as well as understand their implementations, complexity, and limitations of use. In particular, you should be familiar with computer representations of the classic data structures: stacks, queues, trees, lists, priority queues, and tables, with basic algorithms which process these data structures (e.g., list processing, tree traversals and balancing, searching, hashing, sorting, and others), as well as with concepts of algorithms' complexity (``Big Oh", ``Big Theta", worst-case vs. average-case). Although memorizing of programs is generally not required, except for small basic routines specifically pointed out in class, you should be able to describe on examples their functional behavior. Moreover, you should know the time complexity of these programs in terms of ``Big Oh" and ``Big Theta" notation.


QUIZZES, MIDTERM, AND FINAL EXAMINATION


Quizzes will consist of five ``easy" questions each, with allowed time 5 - 10 min. The purpose of quizzes is to test whether you follow the class presentations, read the text, and understand the material.


Unlike the quizzes, the midterm and the final's questions will be a matter of considerable difficulty. For full credit they will require not only your solid knowledge of the subject but also certain level of your creativity, as for instance, solving a problem, writing and running a (fragment of a) program under NetBeans, or evaluating its running time.


All quizzes, midterm, and the final examination are closed book. The time allowed for completion is 1 hour for a test and 2 hours for the final. Use of NetBeans is required. Mathematica and Calculators are allowed but not required.


The examination goal is to determine your level of expertise in the subject matter by asking questions which randomly cover topics throughout the textbook. Because of time limitations, these questions cannot address every single issue of the areas of emphasis; hence their randomness. Your focus should be on understanding and applying the concepts, the methods, the algorithms and the data structures investigated in the textbook, with an emphasis on programming with Abstract Data Types. However, without memorizing strategic facts, like definitions, theorems, and basic algorithms, it may be fairly difficult to quickly produce a full credit answer.


TIP ON TAKING AN EXAMINATION

    * Time yourself carefully. Spending a lot of time on one or two questions while ignoring the others is not a good strategy. If a question seems very difficult to you, take your best shot at the answer and, if time allows, come back to it later.

    * Read every question very carefully so that you have a good understanding of it. If the question consists of more than one part, make sure to answer all of them.

    * Do every problem. An educated guess often earns a partial credit, while a blank answer does not.




 

 


 

 

 Please, contact me right away if you have any questions.

 

 


 

Copyright © 2015 Suchenek - All rights reserved