Switching intro programming language courses 
Author Message
 Switching intro programming language courses

At St. Joseph's University, we're currently considering switching
from Pascal to C or C++ for our introductory programming course.
In part, this is the result of rumors that the advanced
placement (AP) exam will be moving from Pascal to C++ as well as
the consideration that there is a much larger market out there
for C and C++ vs. Pascal.  Rather than go through a debate on
the relative merits of the three languages, we're interested in
how the mechanics of such a change might work.

With this in mind, we'd like to ask those of you who either
have actual experience in changing the curriculum from Pascal
to C or C++, those who have experience in moving from C to C++,
or those who have been teaching C or C++ as the *first*
programming language for your experience and comments.  We're
obviously more interested in the first group, but certainly
welcome comments from the other two groups on the C/C++ issues.


We'll post a summary of the responses in a couple weeks.

As a guide to your response, please consider the following questions:

Material:
--------
What text(s) do you use for either C or C++?  How do you like them?

How early do you cover pointers?  Do you delay covering pointers until
  the second semester?

What versions of C/C++ products (i.e., Borland C, Visual C++, gcc/g++, CC, etc.)
  have you tried for instructional purposes?
  What environment are you using (Unix/Windows/Mac/etc.)?
  What are the experiences of the students (good and bad) with these products?

Transition questions:
--------------------
What was done to prepare the faculty for the change?  How many were
  already familiar with C/C++ (please indicate which language)?

Was C/C++ already in use for succeeding courses?

When the change was made in the intro course, how many other
  courses were changed to use C/C++ as the primary language?
  Were students who had already learned the previous intro language
  "grandfathered" so they could still use it for their assignments?
  If so, how smoothly did this work?

Are a significant proportion of the intro programming course
  students majoring in something else (e.g., math, psychology)?
  What, if anything, was done to accommodate these students?
  Did they respond differently to the changes than the majors?  How so?

What kind of support was available from the university?
  Did you already have lab personnel familiar with C/C++?  With
    the specific package (Visual C++, etc.)?
  Do you have upper-class/graduate student TA's?

Performance evaluation questions:
--------------------------------
Are you happy with the change?

What complaints/praises has the change elicited from students?  faculty?

What is the relative performance in further courses of students who start
  with C++ compared to those who start with Pascal?  of students who
  start with C vs. those who start with Pascal?

What is the relative performance in further courses of students who learn
  C++ after learning Pascal vs. students who learn C++ first?  of students
  who learn C after learning Pascal vs. students who learn C first?



Fri, 13 Mar 1998 03:00:00 GMT  
 Switching intro programming language courses
Quote:

> At St. Joseph's University, we're currently considering switching
> from Pascal to C or C++ for our introductory programming course.
> In part, this is the result of rumors that the advanced
> placement (AP) exam will be moving from Pascal to C++ as well as
> the consideration that there is a much larger market out there
> for C and C++ vs. Pascal.  Rather than go through a debate on
> the relative merits of the three languages, we're interested in
> how the mechanics of such a change might work.

IF (and I need a larger font for this "IF") we accept the premise that CS
programs should concentrate on the usage of programming that are popular
with programming shops or that may be required on future AP exams due to
the influence of a single individual, then I still believe there is an
important consideration that you have overlooked.  This consideration is
that it is more important to worry about the student's skills at the time
of graduation than to concentrate on the initial programming language.

It seems to me that one needs to begin with programming paradigms.  If you
decide that students need are most likely to use the imperative paradigm,
then Modula-2 seems like a better initial language than C++.  If you decide
that students need to be functional programmers, then ml or scheme are
better initial languages.  We happen to believe that the object-oriented
paradigm is more important, so we're using Eiffel as the initial language.  
Our advanced courses make extensive use of C++, but we've found through
experience that C++ doesn't work well for our beginning students.

In Eiffel we can, and do, teach encapsulation, inheritance, polymorphism,
and genericity as a natural part of the first semester.  To do the same
thing properly in C++ would require the discussion of virtual functions,
constructors, destructors, copy constructors, and templates.  This is too
much overhead, at least for our first semester students.  

The introductory C++ courses and textbooks with which I am familiar follow
one of two paths.  Either they cover non-OOP C++ (almost a C subset of C++)
or they are full of example C++ classes that would never be acceptable if
written for production OO code.  It turns out that learning most of the C++
primitives are simply syntactic discussions once you understand the
underlying OOP concepts.  Advanced CS students, who understand OOP don't
struggle learning C++, but freshman certainly do.

- - - - - - - - - - - - - - - - - - - - - - - - - -
    David D. Riley
    Professor & Chair
    Computer Science Department
    University of WI - La Crosse
    La Crosse, WI  54601
- - - - - - - - - - - - - - - - - - - - - - - - - -
--
- - - - - - - - - - - - - - - - - - - - - - - - - -
    David D. Riley
    Professor & Chair
    Computer Science Department
    University of WI - La Crosse
    La Crosse, WI  54601
- - - - - - - - - - - - - - - - - - - - - - - - - -



Tue, 17 Mar 1998 03:00:00 GMT  
 Switching intro programming language courses
The University of Central Florida used to use Pascal as an introductory
language but later went to Modula-2.  Their reasoning, to my knowledge
was that Modula-2 and Pascal both have more error checking that C and
this was better for a new student.



 > > At St. Joseph's University, we're currently considering switching
 > > from Pascal to C or C++ for our introductory programming course.
 > > In part, this is the result of rumors that the advanced
 > > placement (AP) exam will be moving from Pascal to C++ as well as
 > > the consideration that there is a much larger market out there
 > > for C and C++ vs. Pascal.  Rather than go through a debate on
 > > the relative merits of the three languages, we're interested in
 > > how the mechanics of such a change might work.
 > >
 > IF (and I need a larger font for this "IF") we accept the premise that CS
 > programs should concentrate on the usage of programming that are popular
 > with programming shops or that may be required on future AP exams due to
 > the influence of a single individual, then I still believe there is an
 > important consideration that you have overlooked.  This consideration is
 > that it is more important to worry about the student's skills at the time
 > of graduation than to concentrate on the initial programming language.
 >
 > It seems to me that one needs to begin with programming paradigms.  If you
 > decide that students need are most likely to use the imperative paradigm,
 > then Modula-2 seems like a better initial language than C++.  If you decide
 > that students need to be functional programmers, then ml or scheme are
 > better initial languages.  We happen to believe that the object-oriented
 > paradigm is more important, so we're using Eiffel as the initial language.  
 > Our advanced courses make extensive use of C++, but we've found through
 > experience that C++ doesn't work well for our beginning students.
 >
 > In Eiffel we can, and do, teach encapsulation, inheritance, polymorphism,
 > and genericity as a natural part of the first semester.  To do the same
 > thing properly in C++ would require the discussion of virtual functions,
 > constructors, destructors, copy constructors, and templates.  This is too
 > much overhead, at least for our first semester students.  
 >
 > The introductory C++ courses and textbooks with which I am familiar follow
 > one of two paths.  Either they cover non-OOP C++ (almost a C subset of C++)
 > or they are full of example C++ classes that would never be acceptable if
 > written for production OO code.  It turns out that learning most of the C++
 > primitives are simply syntactic discussions once you understand the
 > underlying OOP concepts.  Advanced CS students, who understand OOP don't
 > struggle learning C++, but freshman certainly do.
 >
 > - - - - - - - - - - - - - - - - - - - - - - - - - -
 >     David D. Riley
 >     Professor & Chair
 >     Computer Science Department
 >     University of WI - La Crosse
 >     La Crosse, WI  54601
 > - - - - - - - - - - - - - - - - - - - - - - - - - -
 > --
 > - - - - - - - - - - - - - - - - - - - - - - - - - -
 >     David D. Riley
 >     Professor & Chair
 >     Computer Science Department
 >     University of WI - La Crosse
 >     La Crosse, WI  54601
 > - - - - - - - - - - - - - - - - - - - - - - - - - -



Fri, 20 Mar 1998 03:00:00 GMT  
 
 [ 3 post ] 

 Relevant Pages 

1. Programming Language for Undergrad Intro CS Course?

2. Intro to Linux Programming (C) courses online

3. Beta testers sought for web-based Intro to C course

4. Needed: Good intro C course assigments

5. C in an intro course

6. Education Services'Course Schedule for Programming Courses

7. free online C language courses

8. C or Visual C++ Language Course

9. Summer course in language C - Does one exist?

10. College Course by videotape in Language C needed

11. course of Russian language

12. Intro NETWORK PROGRAMMING HELP!

 

 
Powered by phpBB® Forum Software