CS 4004

Discrete Mathematics and Data Structures

Instructor: Prof. Ing-Ray Chen


- Catalog Description
- Topics to be Covered
- Textbook
- Grading
- Class Schedule
- Important Dates
- GTA
- FAQ
- Programming Assignments
- Exam
- Lecture Slides
- Software

Catalog Description


Coursework covers logic, mathematical induction, recursion, mathematics of algorithms, finite-state machines, arrays, stacks, lists, trees, sorting, and searching

Textbook


  • Discrete Mathematics and Its Applications, 4th Edition, Kenneth Rosen, WCB McGraw-Hill Publishing Co., 1999, ISBN: 0-07-289905-0.
  • A Practical Introduction to Data Structures and Algorithm Analysis, Java Edition, Clifford A. Shaffer, Prentice Hall, 1998, ISBN: 0-13-660911-2.

    Book Chapters/Sections to be Covered (Tentative)


    Discrete Mathematics: Rosen's book, Sections 1.1-1.8, 2.2, 3.1-3.4, 4.1, 4.3, 5.1, 6.1, 6.5, 10.2, 10.3.

    Practice Exercise Problems:

    Data Structures: Shaffer's book, Chapters 1, 3, 4, 5, 6, 7, 8, 10 and 11.

    Practice Exercise Problems:

    Grading


  • 20% programming assignments (2)
  • 25% exam 1
  • 25% exam 2
  • 25% exam 3
  • 5% class participation



    Class Schedule


    Date Exam/Assignment Source Subject
    1/17   DM 1.1-1.5 Logic and Sets
    1/24   DM 1.6-1.8, 2.2 Functions and Complexity
    1/31   DM 3.1-3.4 Mathematical Induction, Recursion
    2/7   DM 4.1, 4.3, 5.1 Counting, Recurrence Relations
    2/14   DM 6.1, 6.5, 10.2, 10.3 Relations and Finite State Machine
    2/21 exam 1   7:00 - 9:45 p.m. in class
    2/28 assignment 1 DS 1.1-1.4, 3.1-3.8 Introdution to Data Structures, Algorithm Analysis
    3/7 No Class   Spring Break
    3/14   DS 4.1-4.3 Lists, Stacks, and Queues
    3/21   DS 5.1-5.6 Binary Trees
    3/28   DS 6.1-6.5 General Trees
    4/2 assignment 1 due   midnight
    4/4 exam 2   6:00 - 8:45 p.m. in class
    4/11 assignment 2 DS 7.1-7.5 Graphs
    4/18   DS 8.1-8.9 Sorting
    4/25   DS 10.1-10.4, 11.1-11.5 Searching and Indexing
    5/2 exam 3   6:00 - 8:45 p.m. in class
    5/5 assignment 2 due   midnight


    Important Dates


  • exam 1 (DM) on 2/21
  • exam 2 (first part of DS) on 4/4
  • exam 3 (second part of DS) on 5/2
  • Programming Assignment 1 due on 4/2
  • Programming Assignment 2 due on 5/5

    GTA Names and Email Addresses


  • Class GTA: TBA
  • Systems GTA: Sapna George, Room NVC 421, (703) 538-8379, sgeorge@vt.edu


    Frequently Asked Questions and Answers


  • DM questions on exam 1
  • FAQ questions on assignment 1
  • DS questions on exam 2
  • FAQ questions on assignment 2
  • DS questions on exam 3


    Programming Assignments


    Assignment 1  
    Assignment 2  


    Policy:

    • A programming assignment turned in late will be penalized 10% off for each day late. After a week late, the late assignment will be 100% off.
    • Any Java programs not passing the javac compiler will be counted 0.
    • Any Java programs not able to generate any output on execution by java will be counted 0.
    • Partial credits will be given to programs which generate partially correct outputs
    • All students must observe the Graduate Honor Code. No cheating, plagiarism, falsification, or academic sabotage allowed in this class. Violated students will be reported to Virginia Tech's Graduate Honor System. All assignments turned in should add a Pledge for Assignment clause as follows at the beginning: I pledge that this assignment has been completed in compliance with the Graduate Honor Code and that I have neither given nor received any unauthorized aid on this assignment.
      Signed ______________________________________________________

    How to Turn in Your Assignment:
    • Your assignment should be emailed to the class GTA in a ZIP file by the midnight of the specified due date. The ZIP file should contain only the source file, data file and a readme file explaining how to compile and execute the program. Internal documentation of the source file is not required.

    Exam


    Sample Test 1 (DM) -- Skip Problems 14 and 15  
    Solution of Sample Test 1(DM) -- Skip Problems 14 and 15
    Sample Test 2 and Solution (DS&A)  
    Sample Test 3 and Solution (DS&A)  


    Lecture Slides


  • Lecture 1 (DM) Section 1.1   Section 1.2   Section 1.3   Section 1.4   Section 1.5  
  • Lecture 2 (DM) Section 1.6   Section 1.7   Section 1.8   Section 2.2  
  • Lecture 3 (DM) Section 3.1   Section 3.2   Section 3.3   Section 3.4  
  • Lecture 4 (DM) Section 4.1   Section 4.3   Section 5.1  
  • Lecture 5 (DM) Section 6.1   Section 6.5   Section 10.2   Section 10.3  
  • Lecture 1 (DS) Chapter 1   Chapter 3  
  • Lecture 2 (DS) Chapter 4  
  • Lecture 3 (DS) Chapter 5  
  • Lecture 4 (DS) Chapter 6  
  • Lecture 5 (DS) Chapter 7  
  • Lecture 6 (DS) Chapter 8  
  • Lecture 7 (DS) Chapter 10  Chapter 11  

    Software


    Programming assignments should be implemented using Java. You can apply for a department UNIX account and use the standard "javac" and "java" commands to compile and execute your programs. You can also install the following (free) software yourself under Windows: TextPad is a nice tool allowing you to edit, compile and execute Java programs.