COM1101 Algorithms and Data Structures 1

Winter 2001 Course Syllabus and Calendar

Professor Futrelle -- College of Computer Science, Northeastern U., Boston, MA

(Version of 2/24/2001 -- The final version of this document)

The later labs in this course are due Mondays at 4pm, not before class.

In the calendar below, the holiday on Jan 15th is marked in red. The final exam period, March 12th-17th, is marked in green and the Final is on Tuesday the 13th at 3:30pm. You can also see the full Northeastern University Academic Calendar, which is a PDF document.

    
   January 2001
 S  M Tu  W Th  F  S
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

    
   February 2001
 S  M Tu  W Th  F  S
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28
 
    
   March 2001
 S  M Tu  W Th  F  S
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Note: The reading assignments in your textbook, listed throughout the syllabus below, should be completed before coming to the class meeting they apply to.


Weeks 1, 2 and 3: Review of the basics. File I/O for relational databases

Week 1

Thurs. January 4th
Go over the Syllabus.
The C++ Background Notes are here. What you should already know.
You'll need to continually re-read and refer to the basic C++ information in chapters 1, 2, 3, 4, 5, 7 and 10 throughout the quarter.
All tests and machine problems will assume that you know these basics.
Fill out the required questionnaire during this class and hand it in.
Bring your textbook to all classes -- I will refer to it often.
Look ahead to the readings that will be covered in each class and do the readings before coming to class.
 
Week 2

Mon. January 8th
Review of the basics of C++, prerequisites for this course.
Where the course is headed -- Three projects will focus our attention.
The first project: Random access to disks allows us to build relational database tables. (Lab 2, Wed. Jan. 17th) Arrays, with sorting and searching algorithms, allow us to build indexes to the databases. (Lab 3, Tues. Jan. 16th)
Read for today: Chapter 5 on I/O and the Lab 2 assignment and details.
 
Tues. January 9th
Lab 1. How to create stand-alone projects. This lab is due handed in by the end of the hour. Attendance required (as usual).
 
Wed. January 10th
How relational database tables are constructed and laid out on a disk.
How random access to files allows us to deal with database records on disk.
How arrays will allow us to build indexes to the databases.
Read for today: The C++ string class, Sec. 10.3.
 
Thurs. January 11th
Details of random access to material in files.
How to use input and output operations on randomly positioned files (ref: Chap. 5).
Creating and using an API (Application Programming Interface) in the machine problems.
Introduction to arrays.
Reading for today: Secs. 9.1 and 9.2. Also, look briefly a the array sorting algorithm, Display 9.11, pg. 573.
 
Week 3

Mon. January 15th
MARTIN LUTHER KING JR'S BIRTHDAY observed. University closed. No class.
 
Tues. January 16th
Lab 2. Machine Problem 1, part 1 -- relational database (DB) basics. The first of two labs on DBs and random access file I/O. This assignment will not include implementing indexes.
Lab 2 is due on Monday, January 22nd, no later than the beginning of class.
 
Wed. January 17th
Efficiency is required for large volumes of data. Binary search is efficient for large array-based indexes, and requires a sorted array.
Reading for today: Sorting an array, pgs. 573-578.
Reading on binary search: look briefly at pgs. 747-749, but focus on the program in Display 12.8 on pg. 756.
How to sort two arrays at once (for Lab 3).
 
Thurs. January 18th
Introduction to classes. The cars example (for Machine Problem 2: Labs 4 and 5).
Reading for today: Chapter 6 through pg. 334. This will be new and non-trivial material for practically everyone, so read it carefully.
 

Weeks 4 and 5: Object-oriented programming. Using classes in simulations

Week 4

Monday. January 22nd
Lab 2 due at the beginning of class -- turn in whatever you have done by this time.
Final comments on arrays and sorting for Lab 3 tomorrow.
Continuing the introduction to classes and member functions.
Reading for today: Re-read Chapter 6 through pg. 334.
Brief review for Wednesday's Quiz #1.
 
Tues. January 23rd
Lab 3. Machine Problem 1, part 2 -- relational database indexing. The second of two labs on DBs focusing on implementing indexes.
Lab 2 is due on Monday, January 29th, no later than the beginning of class.
 
Wed. January 24th
Quiz #1, 20 minutes. Focusing on I/O, strings and array basics, but not including array sorting and searching.
How to set up and manage an array of objects. The car simulation project.
Reading for today: Sec. 9.4 on Arrays and Classes.
Separate compilation and multi-file projects. You will use these in Labs 4-7.
Additional reading for today: Sec. 8.2.
 
Thurs. January 25th
Abstract Data Types (ADTs) and software design strategies.
Reading for today: Sec. 8.1.
What are namespaces? Look over Sec. 8.3
 
Week 5

Mon. January 29th
Lab 3 due by 4pm (box in 161CN) Note new time -- turn in whatever you have done by this time.
Time-based simulation. Use of random numbers in simulation.
Reading for today: Page 921. The random number functions in C++.
 
Tues. January 30th
Lab 4. Machine Problem 2, part 1 -- Using classes for simulation. The first of two labs on this topic
This will include selecting and initializing objects (class instances), but with only simple object functionality.
Lab 4 is due on Monday, February 5th by 4pm.
 
Wed. January 31st
More on ADTs. Re-read Sec. 8.1.
 
Thurs. February 1st Focusing on array sorting and binary search and the basics of classes.
Summary of what we've learned about classes and objects up to now.
Reading for today: Re-read Chapters 6 and 8.
 

Weeks 6 and 7: Object constructors and destructors. Pointers. Midterm Exam (2/7/2001)

Week 6

Mon. February 5th
Lab 4 due by 4pm (box in 161CN) Note new time -- turn in whatever you have done
 
Tues. February 6th
Lab 5. Machine Problem 2, part 2 -- Using classes for simulation. The second of two labs on this topic
This will be focused on adding interesting functionality to your classes.
Lab 5 is due on Monday, February 12th by 4pm.
 
Wed. February 7th
Quiz #2 -- Note this new date!, 20 minutes.
 
Thurs. February 8th
Introduction to building collections of objects. (For Labs 6 and 7)
 
Week 7

Mon. February 12th
Lab 5 due 4pm (box in 161CN) Note new time -- turn in whatever you have done
Hand back and discuss Quiz #2.
 
Tues. February 13th
Lab 6. Machine Problem 3, part 1 -- Using a collection of classes to build more complex objects. The first of two labs on this topic
This lab will focus on the static class design, with no appreciable functionality.
Lab 6 is due on Monday, February 19th by 4pm.
 
Wed. February 14th
Midterm exam -- Note this new date!
Introduction to pointers and addresses, dereferencing operators and typedefs.
Reading for today: Sec. 11.1.
 
Thurs. February 15th
Dynamic arrays.
Reading for today: Sec. 11.2.
 

Weeks 8 and 9: Dynamic allocation of objects, new and delete;

Week 8

Mon. February 19th
Lab 6 due 4pm (box in 161CN) Note new time -- turn in whatever you have done
Hand back the graded Midterm Exams and go over the results and answers.
Creation and destruction of objects.
Functions and dynamic objects.
Reading for today: Sec. 11.3.
 
Tues. February 20th
No lab this week.
 
Wed. February 21st
Pointers.
 
Thurs. February 22nd
Pointers and creation of object instance with new.
Constructors.
Introduction to inheritance
Reading for today: All of Chapter 13.
 
Week 9

Mon. February 26th
See the "wrap-up" notes covering pointers and inheritance.
THE WRAP-UP NOTES HAVE DETAILS OF TOPICS AND PAGE NUMBERS IN THE TEXTBOOK FOR THE FINAL TOPICS OF THE QUARTER.
 
Tues. February 27th
Lab 7. Wrap-up lab covering pointers and inheritance.
Much of Lab 7 is based on the examples in the wrap-up mentioned above.
Due Monday, March 5th, 4pm, drop-box in 161CN.
 
Wed. February 28th
Brief overview of inheritance.
 
Thurs. March 1st
Finish our study of inheritance.
 

Week 10: Course summary and review

Week 10

Mon. March 5th
Review session 1. C++ basics, I/O and strings.
 
Tues. March 6th
Make-up lab time, TA and tutors will be in the lab.
 
Wed. March 7th
Review session 2. Classes and objects. Pointers and dynamic data structures.
 
Thurs. March 8th
Last Class.
Review session 3. Inheritance and other topics as required.
 
 
Week 11

FINAL EXAM WEEK -- Final to be held on Tuesday the 13th at 3:30pm

Back to COM1101 Winter 2001 homepage (teaching Gateway) Back to Professor Futrelle's homepage