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