[comp.lang.c] class ideas

turk@andrews.edu (Daniel E. Turk) (09/13/90)

I am trying to get ideas for homework, projects, and examples for
several classes that I am teaching this year.  Your thoughts will
be greatly appreciated.  I have students ranging all the way from
college freshmen up through master's students.  The following are
the classes I'm doing (all are 1 quarter long):

	COSC 141 Intro to Computer Science
		- Freshman level
		- First class for CS majors
		- C language
	INSY 471 Data Structures
		- Senior level
		- Second data structures class (intro is COSC 142)
		- "language independent", but C is used for examples
	INSY 472 Data Base
		- Senior level
		- First class on database systems
		- Taught from a "hands-on", "practical", "user" point 
		  of view, primarily for Information Systems majors
		  and Business majors.
	INSY 541, 542 Software Engineering
		- Masters level
	COSC 698 Object-Oriented Programming
		- Senior & Masters level
		- General OOP concepts
		- C++ language
		- Other languages as available

Thanks ahead of time.  I'm sure you all have great ideas for these types
of classes!

--------------------------------------------------------------------------
Daniel E. Turk                      |                  |  turk@andrews.edu
Andrews University                  |                  |
Computer Information Science Dept   |                  |
Berrien Springs, MI 49104-0020 USA  |                  |    (616) 471-3426
==========================================================================

turk@andrews.edu (Daniel E. Turk) (09/13/90)

I am trying to get ideas for homework, projects, and examples for
several classes that I am teaching this year.  Your thoughts will
be greatly appreciated.  I have students ranging all the way from
college freshmen up through master's students.

I am posting this request to several newsgroups since I have several
different classes.....  The following are the classes I'm doing 
(all are 1 quarter long):

	COSC 141 Intro to Computer Science
		- Freshman level
		- First class for CS majors
		- C language
	INSY 471 Data Structures
		- Senior level
		- Second data structures class (intro is COSC 142)
		- "language independent", but C is used for examples
	INSY 472 Data Base
		- Senior level
		- First class on database systems
		- Taught from a "hands-on", "practical", "user" point 
		  of view, primarily for Information Systems majors
		  and Business majors.
	INSY 541, 542 Software Engineering
		- Masters level
	COSC 698 Object-Oriented Programming
		- Senior & Masters level
		- General OOP concepts
		- C++ language
		- Other languages as available

Thanks ahead of time.  I'm sure you all have great ideas for these types
of classes!

--------------------------------------------------------------------------
Daniel E. Turk                      |                  |  turk@andrews.edu
Andrews University                  |                  |
Computer Information Science Dept   |                  |
Berrien Springs, MI 49104-0020 USA  |                  |    (616) 471-3426
==========================================================================

turk@andrews.edu (Daniel E. Turk) (09/14/90)

It was asked that I describe our INSY 471, Data Structures class a little
further:

> 
> In article <130470625690@andrews.edu> you write:
> >I am trying to get ideas for homework, projects, and examples for
> >several classes that I am teaching this year.  Your thoughts will
> >be greatly appreciated.  I have students ranging all the way from
> >college freshmen up through master's students.
> 
> >	INSY 471 Data Structures
> >		- Senior level
> >		- Second data structures class (intro is COSC 142)
> >		- "language independent", but C is used for examples
> 
> Please describe this class in more detail.  What text do you use?
> What specific topics do you cover?
> 

We have an introductory sequence of classes for all our computer majors.
It is a one year 3-quarter sequence consisting of COSC 141, 142, and 143.
COSC 141 is an Introduction to Computer Science, covering mostly the basics
of the C programming language.  COSC 142 is an Elementary Data Structures
class covering pointers, structures, linked lists, basic binary trees,
sorting, and searching.  Some other topics such as Big O notation,
hashing, etc are covered.  COSC 143 is Computer Organization.  It intro-
duces the students to assembler, digital logic, and some hardware.  
Programming is done in C and in 68000 assembler.

We also have two classes during the Sophmore year that follow this sequence.
COSC 226, Introduction to Systems Software, is a project class where the 
students spend all quarter writing a simple language translator.  It is
written in C and translates to 68000 assembly language.  Then they take
COSC 265, Assembler, which is soley 68000 assembly language programming.

OK.  You asked about INSY 471, Data Structures.  

This is what we call a "swing" class:  both Junior/Senior undergraduates
as well as graduate students who are making up some deficiencies take this
class.  We assume the COSC 142 class expertise and build from their.  I 
like to broaden their coverage of the basic data structures and talk about
a number of variations on trees, lists, searching, and sorting.  We usually
cover hashing (6 or so methods), AVL height-balanced trees, B-trees, and
graphs.  The book(s) I used last year and have chosen for this year are:

	Sedgewick, Robert.  (1990).  _Algorithms in C_.  Addison-Wesley.
	Esakov, J., & Weiss, T.  (1989).  _Data Structures: An Advanced
		Approach using C_.  Prentice-Hall.

The book by Sedgewick is our primary text.  I use the Esakov book because
I *love* his style and want my students exposed to good style, flexible
programming methods, etc.  This book is great for that.  BUT, I found that
even many of the Senior level students had trouble implementing his 
"polymorphic" libraries.  I don't know why or what I could have done
differently to avoid this problem.

I wish we could use Sedgewick for both our COSC 142 and our INSY 471 classes.
I think that it would be a perfect sequence to use, and Sedgewick builds some
routines early in his book that make later more complex algorithms quite
simple if you draw on the routines developed earlier.  For example, some of
the graph algorithms can be written using some of his earlier developed
list and queue/priority-queue routines.....

Anyway, that's what the class has been over the last two years.  Any 
suggestions/comments/etc you have will be appreciated.

From my perspective, I need a variety of good EXAMPLES for in-class 
presentation; good HOMEWORK/programming assignments; and good PROJECTS.
Obviously I think that I have some good ones already, but I'm sure I could
get a lot of other GREAT ideas from all of you out there.

Several have requested that I post a summary of my responses.  
I'll be glad to do this.

Thanks for your interest!  

Dan

--------------------------------------------------------------------------
Daniel E. Turk                      |                  |  turk@andrews.edu
Andrews University                  |                  |
Computer Information Science Dept   |                  |
Berrien Springs, MI 49104-0020 USA  |                  |    (616) 471-3426
==========================================================================