John Shepherd's CS Revision

(DRAFT ... cs2000)

Background

The course revision proposed by UNSW for generalist courses fits the existing CS model pretty well.

The main differences are that Gen Ed becomes a "mainstream" component of the course (at present it seems to be treated largely as an add-on), and the course should provide a freer choice of elective subjects.

The new scheme requires the definition of a "major" and "minor" sequence for each discipline The current requirements for CS fit precisely with the (current) definition of a "major":

COMP1011, COMP1021,
COMP2011, COMP2021, COMP2041
COMP31xx, COMP32xx, COMP3xxx, COMP3xxx
(although if compulsory maths subjects MATH1131, MATH1231, MATH1081 are included in this list, then the major is slightly "over-weight").

Stop Press! Arun wants to add   COMP2001 OO Analysis/Design/Programming

A "minor" could comprise the first five COMP subjects.

Under this scheme, here's a "minimal change" typical CS program:

Year 1

S1:  COMP1011,  MATH1131,  elective,  elective
S2:  COMP1021,  MATH1231,  MATH1081,  elective
(Maintain the current notion of "bridging" via MATH1011, COMP1001)
Year 2
S1:  COMP2011,  COMP2021,  elective,  elective
S2:  COMP2041,  elective,  elective,  elective
Year 3
S1:  COMP3xxx,  COMP3xxx,  elective,  elective
S2:  COMP3xxx,  COMP3xxx,  elective,  elective

Assumes: all subjects are 6cu.

In years 2 and 3, one of the elective slots would typically be filled by a pair of 3cu Gen Ed subjects.

In year 3, some (most?) of the electives would typically be COMP3 subjects.

Debating Points

Personally, I think the "major" requirement is too weak. We could have students graduating from here as "Computer Science" majors who have taken only four level-3 (specialist) computing subjects. Do we want this? Arun has proposed increasing the minimum number of COMP3 subjects that students are required to take, but this is at odds with the UNSW notion of "generalist degree", which provides for a maximum of 10 compulsory subjects to make a major. It might also make it difficult to design combined degrees. The general feeling in the teaching committee seems to be "Specify a major in line with the requirements and let the students fill out the rest with COMP subjects if they want".

I would also like to see more COMP options available in years 1 and 2. This is primarily in response to requests from CS students who want to study more computing, but find there are very few options in years 1 and 2. The typical response to this situation is for them to take INFS subjects because they're the most "computing-like" subjects around (and because they're perceived to be relatively easy).

Some possiblities for extra subjects in years 1 and 2:

If we're going to do lots of double-degrees using CS, we're either going to need an introductory C subject (both Maths and various Eng schools want this) or try to persuade them that Java is an adequate substitute. They won't buy the idea that Haskell is useful to their students.

A more radical proposal for first year: have three "introductory algorithms" subjects in three different languages (Haskell, Java, C) and allow students to take some combination of these. We could force CS students to take Haskell then Java. Others can do what they want (e.g. C then Java or Java then C).

I question the usefulness of all of the Maths that CS students are required to take in Year 1. Discrete Maths is, of course, essential, but how much of the rest? Could/would Maths provide "Mathematics 1A+1B" for COMP students as a 6cu subject? (A possible trade-off for this might be to make Mathematical Computing a compulsory level 2 subject)

Maths actually has some useful subjects in later years that could potentially be included as compulsory CS. (e.g. Mathematical Computing so they actually get some numerical analysis somewhere).

There have been requests for a COMP1001++ subject (a follow-on from COMP1001, but in more depth).

I would also question whether the current content of COMP1001 forms an effective "bridge" for people with no computer experience into COMP1011. Maybe we need a different bridging subject for our majors. We should retain COMP1001 as a "general purpose" servicing subject, for which purpose it is very effective.

The present scheme essentially partitions up COMP3 subjects into three classes (systems, software and the rest). Students are required to take at least one "systems" subject and at least one "software" subject. Why was this partitioning introduced? Are the reasons for it still valid? Are new partitionings possible? For example:

Should we insist that students take at least one from each of these? Should we adopt some totally different scheme for ensuring minimal core knowledge and breadth from our graduates?