Computer Science Department

Loyola College

 

CS 301 – Data Structures & Algorithms I

 

                            

 

                        

    

                        Instructor:       Roberta E. Sabin                                    

                             Office:             Donnelly Science 125E                      

Java                             Telephone:      (410) 617-2562

                             FAX :               (410) 617-2157

                             E-mail: res@loyola.edu

 

 

 

            Black Board Course Website:

                        http://www.loyola.edu/blackboard/index.html

      

                      Visit the CS Department WebSite: http://www.cs.loyola.edu

 

                                    Class Meets:  MWF 11-11:50 (in MH040)

 

Office Hours:      Monday, Wednesday, Friday:   10-10:50

                                                                  Other times by appointment or stop by.

                                    (I am usually here on MWF 8-8:50 and 12-12:50.  I am frequently in my office until 3 or 4 on MWF.)

 

 

                                                  

 

One must learn by doing the thing, for though you think you know it, you have no certainty until you try,                           --Sophocles, 5th century B.C.

 

In programming, it is not enough to be inventive and ingenious. One also needs to be disciplined and controlled in order not be become entangled in one's own complexities.

--Harlan D. Mills, Forward to Programming Proverbs by Henry Ledgard

 

The price to be paid for reliability is simplicity.                                                                                                                                       -- C. A. R. Hoare

 

Communicating what the code is supposed to do is more important than having it work right because someone is going to have to change it later.

--Carl Powell, 

 

Analytical Engine has no pretensions whatever to originate anything.  It can do whatever we know how to order it to perform.

                                                                                                                                                                                                    --Ada Augusta Byron, 1843

 

 

CS301                        Data Structures & Algorithms I                                        3 credits

 

COURSE INFORMATION

 

 

Catalog Description:

Prerequisite: CS202. Elementary data structures are designed and built using an object-oriented approach and language. Associated algorithms are analyzed for efficiency. Introduces a UNIX-based platform for programming.

 

 

Text:  Carrano, Frank M. and Janet J. Prichard, Data Abstraction and Problem Solving with Java, Addison-Wesley, 20056 (2nd edition).

 

Supplemental Material:

 

         Textbook materials for students: http://www.aw-bc.com/cssupport/Carrano.html

Java documentation (from Sun): http://java.sun.com/j2se/1.5.0/docs/api/index.html

Linux commands (from Linux in a Nutshell): http://www.linuxdevcenter.com/linux/cmd/

jGrasp download site and documentation:   http://www.eng.auburn.edu/grasp/

Java tutorial: http://chortle.ccsu.ctstateu.edu/CS151/cs151java.html  (slow, methodical, and very comprehensive)

 

             There are many, many additional resources on the Web relating to algorithms and data structures.

 

 

Course Objectives:

 

Upon successful completion of this course, you should be able to:

1.        understand the importance of the choice of data structures and the effect of those choices on program efficiency

2.        understand efficiency measures and judge the big-O efficiency of simple algorithms

3.        design data structures as objects and implement them in Java

4.        understand and use both top-down design and object-oriented design in software development

5.        use a Linux-based platform for writing, debugging, and testing software

6.        write well-designed, efficient, well-documented code in Java    

 

 

What you can expect of me: You can expect that I will come to class prepared and ready to help you learn.  You can expect me to be enthusiastic (easy--since I LOVE computer science and teaching!), be knowledgeable, and keep the class moving. You can expect me to be available during my office hours and at other times that you arrange to see me.  Expect me to return graded work promptly.  You can expect me to treat you respectfully.

 

 

What I expect of you:  I expect you to come to every class prepared to contribute to class—computing is an active sport.  You CANNOT learn it in the passive mode. This means that you should have completed the assignment, done the reading, and determined what you need help in understanding.  You contribute to class by intelligently questioning the instructor and offering further explanation to me and your classmates. I expect you to take responsibility for learning computer science—you won’t be sorry.  Further, I expect you to treat every other member of the class (including me) with respect.

 

 

 

 

 

 

 

 

Course Outline of Class Lectures: (notice that tests and quizzes are shown)

 

Class No.

Date

Topics

Reference (text)

1

1/17  W

Intro to the course

Review of software engineering principles

Introduction to Linux

Syllabus

2.1

2

1/19 F

Software engineering principles

2.2-2.3

3

1/23 M

Discussion of PA1

 

4

1/25 W

Simple recursion

3.1-3.2

5

1/27 F

Multiple recursive calls

3.3-3.4

6

1/30 M

ADT List

4.1-4.2

7

2/1 W

Implementing ADTs

PA1 due

4.3

8

2/3 F

Linked List review

Quiz 1

5.1-5.2

9

2/6 M

Operations with linked lists

5.2-5.3

10

2/8 W

Variations on linked lists

5.4

11

2/10 F

The Java Collections Framework

5.5

12

2/13 M

Using recursion: backtracking

6.1

13

2/15 W

Grammars and recursion

PA2 due

6.2

14

2/17 F

Mathematical expression of efficiency of recursion

6.3

15

2/20 M

Discussion of PA3

Quiz 2

 

16

2/22 W

ADT Stack

7.1-7.2

17

2/24 F

Implementing stacks

7.3-7.4

18

2/27 M

Stack applications

7.4-7.5

19

3/1 W

Connection between stacks and recursion

PA3 due

7.6

20

3/3 F

TEST 1

 

Spring Break March 6-10

 

21

3/13  M

Stack Applications: postfix evaluation and conversion

Graph traversal using a stack and using recursion

7.4

7.5

22

3/15 W

PA3 due

Connection between stacks and recursion

7.6

23

3/17 F

ADT Queue

Linked list implementation

8.1

8.3

24

3/20 M

Array-based implementation of a Queue

8.5

25

3/22 W

PA4 due

Simulations: time-driven vs. event driven

 

8.5

26

3/24 F

Simulations (con’t)

Quiz 3

 

27

3/27 M

Advanced Java: Inheritance

9.1