Howard University

School of Business

Department of Information Systems & Analysis

Washington, D.C. 20059

Information Structures 101-360-01

Spring 2000 Draft Syllabus

Instructor :

Office :

Phone :

Office Hours :

Moses Garuba

Room 442 (CB4)

(202) 806-1695

TBA

Lecture Room :

Day :

Time :

Room 418 (CB4)

Tuesdays & Thursdays

12:40-14:00 PM

 

Textbooks

Required: Data Structures with C++ by William Ford and William Top, Prentice Hall, ISBN 0-02-420971-6, 1996.

Desired: Programming in C++ in 12 Easy Lessons by Greg Perry, Sams Publishing, 1994.

Desired: C++ How to Program by H.M. Dietel and P.J. Dietel, Prentice Hall, ISBN 0-13-117334-0, 1997.

Prerequisites

The prerequisite for this course is either 302-01 or 308-01. Students in the course should have an understanding of the basic principles of computing, significant structured programming experience with C or C++ and Windows NT (or an alternative development environment like UNIX). Familiarity with elementary data structures such as arrays, stacks, queues, and trees will be advantageous. Most students registered for the course should have this background; those who do not may have to work harder at the beginning.

The course will cover data structures from a variety of applications areas, and several mathematical topics will be discussed. The course is intended to be self-contained with respect to such topics, but students are likely to find any mathematical experience helpful.

Attendance at lectures is expected. Copies of lecture notes (transparencies used in lecture) will be distributed to students when available. Students are fully responsible for all material presented in lectures, even if some of it does not appear in these notes.

 

Assignments and Exams

There will be ten programming assignments. Generally, they will be handed out on a Tuesday, with electronic submission due six days later on Monday (at 11:59 PM). Your submission must include a readme file, which should not only provide details about your program, but also exhibit your understanding of performance characteristics and the general approach that you took to solve the problem.

There will also be ten weekly problem sets. These will be handed out on Thursdays and due at precept the following week. These will consist of short questions on the material in the lectures, notes, and programs.

There will be a midterm exam on the Thursday before break, which will cover all material up to and including the lecture on the previous Tuesday. The final exam will cover all material in the course.

Grading Policies

You will write some programs for the programming assignments, run them, and submit the code electronically. The code rarely speaks for itself, however, and it is your responsibility to hand in a separate printed write-up that describes what you did. This need not be verbose; indeed, you are better off making it terse. If we ask for a table, provide the table. If we ask to run the program on some data, do it, then describe what happened. If you do extra credit work or something beyond what we've asked, explain what you did, thoroughly.

Grades on the programming assignments and problem set questions will be: 10(perfect in every way), 9(outstanding), 8(excellent), 7(very good), 6(good), 5(not bad), 4(poor), 3(minimal effort), 2(bad), 1(hopeless), or 0(not handed in).

The programming assignments, problem sets, and exams all contribute significantly to your grade. Specifically, your final course grade will be calculated as follows:

In calculating your course grade, we will drop the lowest programming assignment score. Thus, you may choose to "punt" one programming assignment, or you may choose to do them all in an attempt to learn more or to maximize your grade. The precise values of these weights are not nearly as important to you as it is to be sure that you hand in all the work assigned. Doing so will help you if your grade is borderline at the end.

Assignments submitted late will not be marked unless under exceptional circumstances.

There will no extensions due to scheduling conflicts, computer downtime, or other such factors, except under truly extraordinary circumstances. Extensions will be granted only for university-sanctioned excuses such as illness, and then only with the proper documentation. You are responsible for planning ahead and managing your time so that you can complete the assignments on time. You must either finish on time or accept the consequences of doing otherwise.

Computers

You may develop your programs on any machine that you like. However, your finished programs must run on the Windows NT machines in Lab 400 in the School of Business. Programs must be written in the C++ programming language. All registered students in COBIS should have active accounts in the Labs. Students who had accounts in past semesters will have the same login (userid) and password. Other students must contact the relevant system administrators to obtain an account or re-activate a dormant account.

 

Rights and Responsibilities

Problem sets should reflect your own work. Collaboration is inappropriate for the specific problems in the problem sets, though working with lab assistants and other students in the class on similar problems is encouraged.

Programming, like composition, is an individual creative process. Individuals must reach their own understanding of the problem and discover a path to its solution. During this time, discussions with friends are encouraged. However, when the time comes to write the code that solves the problem, such discussions are no longer appropriate -- the program must be your own work (although you may ask lab assistants for help in debugging). If you have a question about how to use some feature of C++, Windows NT, etc., then you can certainly ask your friends or the lab assistants.

Do not, under any circumstances, copy another person's program. Writing code for a fellow student or using another student’s code in any form violates the University's academic regulations and will be dealt with harshly.

Submitting Programming Assignments

Submit your solutions to the programming assignments electronically during lectures or in person to room 442 (COBIS). Include all files required for the program to execute.

 

Keeping in Touch

The best way to contact the instructor is by electronic mail. To raise matters pertaining to the course or get help, send e-mail to: [email protected]

 

 

 

 

 

SCHEDULE OF LECTURES

Week Beginning

Topic

Reading Assignment

Key Events

01/10/2000

Introduction:

  • Abstract Data Types
  • Objects and Classes in C++
  • Object Oriented Design
  • Class Inheritance
  • Abstract Base Classes & Polymorphism

Read Chapter 1

17th January 2000

MLK Day Observed

01/30/2000

Basic Data Types:

  • Integer, Character, and Real Types
  • Enumerated Types
  • Pointers, and Arrays
  • String Literals & Variables
  • Records, and Files
  • Array and Record Applications

Read Chapter 2

 

02/13/2000

Abstract Data Types and Classes:

  • The User Type CLASS
  • Sample Classes
  • Objects and Information Passing
  • Arrays of Objects
  • Multiple Constructors

Read Chapter 3

21st February 2000

Presidents Day Observed

02/27/2000

Collection Classes:

  • Describing Linear Collections
  • Describing NonLinear Collections
  • Analysis of Algorithms
  • Sequential and Binary Search
  • Sequential List Class

Read Chapter 4

16th March 2000

Mid-Term Exam

 

 

19th —25th March

Spring Recess Observed

03/26/2000

Stacks and Queues:

  • The Stack and Stack Class
  • Expression Evaluation
  • The Queue and the Queue Class
  • Priority Queues

Read Chapter 5

 

4/09/2000

Abstract Operators:

  • Describing Operator Overloading
  • Rational Number System
  • The Rational Class
  • Rational Operators
  • Rational Stream Operators

Read Chapter 6

 

4/23/2000

Generic Data Types:

  • Template Functions and Classes
  • Infix Expression Evaluation

Read Chapter 7

Reading Week

Final Exam Week

Beware!

The instructor reserves the right to change the course content, omit parts of the topics listed above or introduce new material midstream to supplement the course text.