Computer Science CSCI/CMPE 2380-01/2388.01, Spring 2009
Computer Science II: An Introduction to Data Structures


Instructor:

Zhixiang Chen, Office: ENGR 3.293, Phone: 3520, Email: chen@cs.panam.edu, WWW Home Page: http://www.cs.panam.edu/~chen/.

Office Hours:

Monday 10:45 AM -- 11:45 AM
Tuesday 10:45 AM -- 11:45 AM
Wednesday 10:45 AM -- 11:45 AM
Thursday 10:45 AM -- 11:45 AM
Friday 10:45 AM -- 11:45 AM

Lectures:


CSCI/CMPE 2380.01/2388.01 MWF 11:45 AM -- 12:35 PM ENG 1.268

Text and Materials:

You should have a copy of the following text: ``Data Structures Using C++", by D.S. Malik, Thomson Course Technology, 2003, ISBN 0-619-15907-3.

You should have completed either CSCI 2330 (C++ Programming) or CSCI/CMPE 1370 plus CSCI/CMPE 1170, or CSCI 1380 (Computer Science I in C++). You should have learned procedure-oriented programming, and the basic concepts of object-oriented C++ programming. In the first one or two days, I will give a quick introduction to Object-Oriented Programming in C++.

Please be advised that there are six programming projects. All projects must be coded in C++ classes unless stated otherwise. Our main programming environment is Microsoft Visual Studio.Net (2003, 2005 or 2008). I have arranged lab hours at our computer labs on the second floor of the Academic Services Building. You can also use the Advanced Computer Lab ENGR. 2.228 on the second floor of the Engineering Building to work on your programming assignments. Please check with our system administrator Mr. David Kirtley to open an account to access machines at the Advanced Computer Lab ENGR 2.228. Lab consultants are available for help on the environment, coding and debugging. If you are not very familiar with Microsoft Visual Studio.Net, you should spend a lot of time to play with it. Although I am always ready to help you and so are the lab consultants, yet without your own time investment to the environment you will have difficulties to complete the course. Remember that we do programming homework assignments and a lot of lab programming assignments.

For your convenience, this link gives you a copy of the user menu about how to getting started with Microsoft Visual Studio.Net ==> Click Here!

Prerequisites:

You are expected to have completed CSCI/CMPE 1370 plus CSCI/CMPE 1170 or CSCI1380. Catalog description:

CSCI/CMPE 1370 An introduction to computer science and computer engineering. The fundamentals of a high-level programming language will be introduced. Methods of problem solving, techniques of algorithmic development and concepts of procedural and object-oriented programming will be emphasized... Societal and Social Issues related to Computer Engineering will be introduced. Prerequisites: CSCI 1300 or equivalent experience and grade of C or better in MATH 1340 or placement in a higher level Math course. Co requisite: CMPE 1170. Cannot receive credit for both CSCI1380 and CMPE1370. Will replace a grade received in CSCI 1380. Equivalent course: CMPE 1370 a student may receive credit in only one course.

CSCI/CMPE 1170 The course includes hands-on instruction and laboratory exercises in developing programs written in a high-level object oriented programming language applying the principles taught in the CMPE 1370 lecture course. Co-requisite: CMPE 1370 . Equivalent course: CSCI 1170 A student may receive credit in only one course.

CSCI 1380 An introduction to computer science and computer programming is given, in which the fundamentals of a high-level programming language will be introduced. Methods of problem-solving, techniques of algorithmic development and concepts of structured object oriented programming will be emphasized. Prerequisite: Concurrent Enrollment in MATH 1340.

Course Topics:

Catalog Description:
A second programming course includes problem solving by structured design; provides an introduction to elementary data structures, including linked lists, stacks, queues, trees and graphs, and advanced programming techniques, including recursion, sorting and searching. Prerequisite: CSCI 1381 or CSCI 1388 or CMPE 1370 or consent of instructor. Equivalent course: CMPE 2380. A student may receive credit in only one course.

Course Objectives:

After completing this course, the students should be able to:
  1. To continue the development of problem solving skills in a context that emphasizes a structured, top-down approach.
  2. To demonstrate the application of software engineering principles in designing, coding and testing large programs.
  3. To introduce students to essential data structures such as linked lists, stacks, queues, and trees. This introduction emphasizes the specification of each structure as an abstract data type (ADT).
  4. To provide a systematic approach to the study of algorithms that focuses first on the understanding of the algorithm and then on analyzing the algorithm from a time/space perspective. In particular searching, sorting, and recursive algorithms are covered.
  5. To evaluate the time and space tradeoffs in the design and implementation of ADT's.
  6. To make students aware of the importance of object-oriented methods in developing software, particularly in the design and implementation of ADT's.

Learning Outcomes:

Upon successful completion of this course, students will be able to
  1. Design, implement, test, and debug simple programs in an object-oriented programming language.
  2. Write programs that use each of the following data structures: arrays, records, strings, linked lists, stacks, queues, and hash tables.
  3. Choose the appropriate data structure for modeling a given problem.
  4. Identify the base case and the general case of a recursively defined problem.
  5. Implement, test, and debug simple recursive functions and procedures.
  6. Compare iterative and recursive solutions for simple problems.
  7. Demonstrate different traversal methods for trees and graphs.
  8. Model problems in computer science using graphs and trees.

Exam, Assignment and Grading:

Midterm One 15%
Midterm Two 15%
Final Test 20%
6 Programming Assignments 20%
25 Lab Programming Exercises 25%
Attendance 5%
Total 100%

The letter grade will be determined as follows:

A: 90-110%B: 80-89% C: 70-79%, D: 60-69% F: 0-59%

Assignment Policies:

Computer Project Documentation And Grading Guidelines:

Internal Documentation

Grading Breakdown (May vary with different projects)

Important Note on Academic Dishonesty:

Students are expected to be familiar with the Department of Computer Science (UTPA) policies on computer usage. All assignments and exams must be the student's own work. Students are encouraged to help one another and work in groups to understand the materials presented in class and the books, but both giving and receiving major sections of programming code and exam solutions are considered cheating. Cheating will be punished severely. For those who don't want others' cheating to cheapen your own hard work and hurt your grade -- send an anonymous cheating reporting to the instructor via email. When a cheating is caught, zero marks will be given the cheated work, and the case will be forwarded to the Department chair and beyond if necessary. Students are also encouraged to seek help with identifying syntax and run-time errors from the instructor during office hours. Students are strongly encouraged to cite their sources if they received extraordinary help from any person or text such as published papers and Web documents.

Office Hours.

The instructor will normally be available in his office during posted office hours. Outside of those hours, or times arranged on an appointment basis, he cannot assumed to be available for course related matters, even if in his office.

Attendance

You are expected to attend each class. You are responsible for all materials covered in class, the text book, and homework assignments. Attendance will not taken every class, but absence may be noted because of occasional counting.

Make-up exams and quizzes will not be given except by prior consent of the instructor. You must notify the instructor within 24 hours after the exam/quiz when it is missed for determination of excuse. Examples of acceptable excuses would be death of an immediate family member, or illness, requiring physician's attention. Depending on the excuse, make-up exams/quizzes will result in a loss of points.

Note to Students with Disabilities.

If you have a disability which will make it difficult for you to carry out the work as required by this class, or you need special accommodation/assistance due to a disability, please contact the Coordinator at the Office of Services for Students with Disabilities, Emilia Hall, Rm 100, immediately. Appropriate arrangements/accommodations can be arranged.