[comp.lang.pascal] Semester Projects needed for Pascal course

riddle@emory.uucp (Larry Riddle) (12/09/88)

Next semester I will be teaching a course on "Introduction to Computer
Science" using Pascal. I was thinking that it would be nice to have
some major programming project that the students would work on
throughout the semester, writing additional parts as we learn the
appropriate pascal language and computer science theory. Has anyone
tried this in a first programming course? I would welcome any
suggestions on possible projects. For example, two possible projects
might be writing a simple text editor or writing a simple symbolic
differentiation program. I would like that the project require as much
of the standard theory as possible, e.g. recursion, pointers, linked 
lists, other data structures, etc.

Any ideas or thoughts about this, either pro or con, would be
appreciated. Thanks.

-- 
Larry Riddle        | riddle@mathcs.emory.edu         PREFERRED
Emory University    | {decvax,gatech}!emory!riddle    UUCP 
Dept of Math and CS | riddle@emory                    NON-DOMAIN BITNET
Atlanta, GA 30322   | (404) 727-7922                  AT&T

jc58+@andrew.cmu.edu (Johnny J. Chin) (12/09/88)

I was once asked to suggest something of this nature.

I think that a Text Editor (if on the IBM-PC, it shouldn't be a line editor
similar to EDLIN) or a simple Database (to let's say manage a persons phone
book or address book).  Both of these should use the concepts of files, strings,various data structures, etc.

Or maybe even a simply spreadsheet.  Programs of this nature gives the student
a chance to try and create something similar to what's on the market.  This way
they have an idea of what the resulting program should do.

I hope this helps.

-- J. Chin (a.k.a. Computer Dr.)

------------------------- Carnegie Mellon University -------------------------
4730 Centre Avenue, Apt. #412       ARPAnet: Johnny.J.Chin@andrew.cmu.edu
Pittsburgh, Pennslyvania 15213      BITnet:  jc58@andrew.BITNET
(412) 268-8936                      UUCP: ...!harvard!andrew.cmu.edu!jc58
------------------------------------------------------------------------------

sybert@felix.UUCP (Mark Sybert) (12/13/88)

In article <3489@emory.uucp> riddle@emory.uucp (Larry Riddle) writes:
>Next semester I will be teaching a course on "Introduction to Computer
>Science" using Pascal. I was thinking that it would be nice to have
>some major programming project that the students would work on
>throughout the semester, writing additional parts as we learn the
>appropriate pascal language and computer science theory. Has anyone
>tried this in a first programming course? I would welcome any
>suggestions on possible projects. For example, two possible projects
>might be writing a simple text editor or writing a simple symbolic
>differentiation program. I would like that the project require as much
>of the standard theory as possible, e.g. recursion, pointers, linked 
>lists, other data structures, etc.
>

As someone who has taught a few years of "Intro to CS" courses, I must
say that having a major, semester long project is a bad idea.  Ideally
its good but in practice you'll find that some (or many) students will
fall behind early, failing to get the first sections of the program
done correctly/cleanly.  Then, theres no way for them to do the later
sections.  True, some students will make it through and they are to
be congratulated, but for most a major project would be too frustrating.

For a first course, use a series of smaller (e.g. 2-3 week) programming
assignments, tailoring each one to a different kind of data structure
and/or control mechanism.  Save the major projects for the 2nd or 3rd
semester course.

One last remark.  When choosing a major project topic, tailor it to the
students background/interests.  In particular, if the students are not
math/cs majors, dont choose a math oriented project (such as the 
differentiation example you mentioned).  Its also possible that there
will be some freshmen in you Intro class who have not had enough math
yet to handle the project. 

mbennett@midas.UUCP (Mike Bennett) (12/14/88)

in article <3489@emory.uucp>, riddle@emory.uucp (Larry Riddle) says:
> 
> Next semester I will be teaching a course on "Introduction to Computer
> Science" using Pascal. I was thinking that it would be nice to have
> some major programming project that the students would work on
> throughout the semester, writing additional parts as we learn the
> appropriate pascal language and computer science theory. 
  [ rest deleted ]

In my Pascal class we were given the assignment of writing a parser for
a subset of Pascal. I thought this was a great way to introduce us not
only to the basics of structured programming in Pascal but also to how
things really work in a language. As I look back, we weren't tested on
our understanding of the parser knowledge, only on the Pascal constructs
and programming. This assignment also required us to write a lexical
analyzer. I picked up a lot from this class, needless to say.


Mike Bennett
Languages Development

marki@hpiacla.HP.COM (Mark Ikemoto) (12/14/88)

>    ...                   I would like that the project require as much
> of the standard theory as possible, e.g. recursion, pointers, linked 
> lists, other data structures, etc.

Your students will be tackling all of this in an introductory course?
Wow!  It sounds like I went to the wrong school if I really wanted
to learn something.

I'm kind of skeptical that an introductory course can include all
of the topics you mentioned.  If your students know another high-level
language already then you may be able to get away with having them
learn Pascal and data structure stuff.  Otherwise, most intro
courses I've read college catalog descriptions of just teach the
nuts-and-bolts of a programming language and that's it; some don't
even get to pointers let alone linked lists and their ilk.

You might want to get a feel for what your students will be able to
handle by talking with instructors in your department who have
taught the class before.

The build-on-one-project sounds like a good idea.  But your students
will get enough of this type of assignment in further classes as
they progress up the ranks.

An argument for a-specific-assignment-for-a-specific-idea is that
the assignment does concentrate on the particular mechanism or
concept to be learned; the assignment doesn't have to be restricted
so that it stays conceptually consistent with what part of the
project has been built up to that point (or will need to be built
for further layers or modules).  This offers you a lot of freedom
in what programming task you assign.  If your students need work
in one area more than another, you can assign programming tasks
accordingly without having to worry about keeping on some type
of project schedule.

A strong argument for the specific-assignment
strategy is that if years later a student needs to return to one
of your assignments to look up a concept, they won't have to
relearn the whole semester's worth of project to understand
how the particular concept was implemented.  It's easier to
look for something in 14 listings of 5 pages each rather than in one
listing of 70 pages.

Hope this helps (or stirs up some feedback).


Mark

marki%HPIACLA.HP.COM%CUNYVM.CUNY.EDU@cunyvm.cuny.e (Mark Ikemoto) (12/17/88)

>    ...                   I would like that the project require as much
> of the standard theory as possible, e.g. recursion, pointers, linked
> lists, other data structures, etc.

Your students will be tackling all of this in an introductory course?
Wow!  It sounds like I went to the wrong school if I really wanted
to learn something.

I'm kind of skeptical that an introductory course can include all
of the topics you mentioned.  If your students know another high-level
language already then you may be able to get away with having them
learn Pascal and data structure stuff.  Otherwise, most intro
courses I've read college catalog descriptions of just teach the
nuts-and-bolts of a programming language and that's it; some don't
even get to pointers let alone linked lists and their ilk.

You might want to get a feel for what your students will be able to
handle by talking with instructors in your department who have
taught the class before.

The build-on-one-project sounds like a good idea.  But your students
will get enough of this type of assignment in further classes as
they progress up the ranks.

An argument for a-specific-assignment-for-a-specific-idea is that
the assignment does concentrate on the particular mechanism or
concept to be learned; the assignment doesn't have to be restricted
so that it stays conceptually consistent with what part of the
project has been built up to that point (or will need to be built
for further layers or modules).  This offers you a lot of freedom
in what programming task you assign.  If your students need work
in one area more than another, you can assign programming tasks
accordingly without having to worry about keeping on some type
of project schedule.

A strong argument for the specific-assignment
strategy is that if years later a student needs to return to one
of your assignments to look up a concept, they won't have to
relearn the whole semester's worth of project to understand
how the particular concept was implemented.  It's easier to
look for something in 14 listings of 5 pages each rather than in one
listing of 70 pages.

Hope this helps (or stirs up some feedback).


Mark

mbennett%MIDAS.UUCP%CUNYVM.CUNY.EDU@cunyvm.cuny.ed (Mike Bennett) (12/17/88)

in article <3489@emory.uucp>, riddle@emory.uucp (Larry Riddle) says:
>
> Next semester I will be teaching a course on "Introduction to Computer
> Science" using Pascal. I was thinking that it would be nice to have
> some major programming project that the students would work on
> throughout the semester, writing additional parts as we learn the
> appropriate pascal language and computer science theory.
  [ rest deleted ]

In my Pascal class we were given the assignment of writing a parser for
a subset of Pascal. I thought this was a great way to introduce us not
only to the basics of structured programming in Pascal but also to how
things really work in a language. As I look back, we weren't tested on
our understanding of the parser knowledge, only on the Pascal constructs
and programming. This assignment also required us to write a lexical
analyzer. I picked up a lot from this class, needless to say.


Mike Bennett
Languages Development