When: 1:00 - 2:00 PM, Friday, February 23.
Where: ICICS/CS X736 (CS Lounge, 7th floor of new ICICS/CS extension, take the South elevator.
Programming languages taught: C in 160, C++ and Java in 260.
Some students (transfer students) have had Java instead.
Many students do not know enough about C to start C++ in 260. Examples of knowledge they lack:
the stages of compilation and linking of multiple modules (important for medium and large programs)
basic control mechanisms in C/C++ (for-loop, while-loop, function invocation and parameter passing)
basic data types and machine representation
Very little time is available for Java because most of the term is spent teaching C++ basics (review of what should have been learned with C) and then object-oriented design, templates, and inheritance.
Are we teaching the right languages at the right levels?
Computing platform: Windows in 160, Unix in 260.
Most students have no Unix experience. The labs have to devote significant time to teaching Unix skills, yet this is not formally part of the curriculum. Should it be?
One-size-fits-all: Are we trying to teach too much to some students and not enough to others?
Does APSC 160 prepare students for CPSC 260?
Does CPSC 260 prepare students for future CPSC courses?
Computer science or computer programming?
CPSC 260 is supposed to teach the basics of good software architecture, data structure design and implementation, an introduction to complexity of algorithms, and rudimentary proofs or at least evaluations of correctness. In practice there is little time for this because much of the time is spent learning the mechanics of programming.
Current scheduling: 220 students in Term 1, 120 students in Term 2.
This causes a number of problems in Term 1. Lab sections are larger, some need to meet at night, and this year half were on Monday, which meant two weeks of labs had to be cancelled in Term 1 (but not in Term 2).
Future scheduling: ECE would like to shift many students to Term 2.
Will this simply move the problems to Term 2? Can we balance the terms better?
Should we teach all of the students in one term with two lecture sections?
CPSC 260 website map -- links to various types of material used in the course
CPSC 260 course notes -- section titles serve as a list of topics
Enrollment pattern: Shift enrollment to 120 in Term 1 (60 Eng Phys and 60 ECE) and 240 in Term 2 (30 Mechatronics and 210 ECE).
Current enrollment is 220 in Term 1 (60 Eng Phys, the rest mostly ECE) and 120 in Term 2 (30 Mechatronics, the rest mostly ECE).
This does not solve all of ECE's problems, but it is the best we can do given the constraints on lab facilities
ECE will require students who delay until third year and those repeating CPSC 260 to register in Term 1. Other students will be able to register for Term 2 on a first-come, first-serve basis.
Computing platform: Switch from Unix to Windows.
Students do not really learn enough Unix anyway, and it detracts from the main focus of CPSC 260, which is supposed to be data structures and object oriented programming.
CS will be installing new thin clients in the lab and more Windows server capacity. Switching to Windows will provide some advantages to CS in terms of scheduling lab facilities (this is a good thing).
Programming language(s): Teach only C++ in CPSC 260. Visual C++ should be used instead of g++ on Unix.
ECE feels that Java is not needed for most students, and those who do need it will learn it when they take EECE 304 (operating systems).
CS has reservations about this for students who will be taking CPSC 211, which is required (along with CPSC 260) as a prerequiste for third and fourth year CS courses; CE students must take CPSC 304 (databases). Strong students will be OK, but weaker studens will have a tough time the first few weeks of CPSC 211.
The possibility of offering a short, focused course that covers the differences between Java and C++ for these students was discussed. A non-credit course might not attract students. Whether a credit course (1 unit?) could fit into the curriculum needs to be determined. ECE will look into this.
Emphasis on programming vs. theory: ECE believes that learning to program, and learning the relationship between programming and the hardware architecture is more important than learning about correctness proofs and complexity analysis.
CS believes that some exposure to mathematical reasoning about programs is important.
Correctness is mainly addressed through emphasis on preconditions and postconditions for methods, and class invariants.
Complexity is mainly addressed through analysis of sorting algorithms.
Both ECE and CS agree that maintaining some emphasis on program testing is important; it should not be dropped from the course despite the fact that students feel that it is not as important as writing programs.
"Advanced" topics: Currently CPSC 260 cover classes, templates, and inheritance, and the "big picture" about how memory is arranged (code, static, heap, and stack segments and the relationship between stack frames and function parameters and local variables). These topics should be kept, but the emphasis should be on basic object-oriented programming, proficiency with pointers, and essential data structures.
Lab sections and TA office hours: It was agreed that two hours per week of dedicated lab sessions are required in order to provide enough time for students to engage with problems while TAs are available to assist them.
Some additional "drop in" lab time should be made available by having the TAs schedule their office hours in the lab during times when students are able to attend.
Lecture pattern: It is preferable to have the lecture pattern for both Term 1 and Term 2. Currently Term 1 is three one-hour lectures (MWF 9AM) and Term 2 is two one-and-one-half-hour lectures (TR 2:30PM).
ECE will see if this can be achieved.
Lecture size: There is mutual concern that a single lecture section with 240 students is quite large. This causes problems getting a suitable lecture room, but it also exceeds the target maximum lecture size for second year courses in CS.
CS has requested that ECE investigate whether APSC can fund a second instructor for Term 2. If two lecture sections are scheduled, it is strongly preferred that they not be concurrent, and it is preferred that they have the same schedule (either 2 or 3 lecture per week -- see the previous item).
Other considerations: The shift to Windows and Visual C++ may make it necessary to equip the lab facility with a data projector and screen.
The switch from a predominantly command-line and Makefile approach (typical of Unix environments) to a GUI-based, full-screen IDE makes it more appropriate to provide "live" demonstrations of basic steps in program preparation, compilation, and debugging.
Command line examples are easily described in web pages (the current approach for labs and assignments), but GUI-based examples are difficult to convey through static screen shots, and also have the downside of making web pages much larger because of the need to include mulitple screen shots to illustrate the sequence of events.
Integrated topics: Interweave the programming and hardware components of the course by teaching aspects of C during the entire term, using it for some of the hardware exercises, and starting the hardware earlier in the term so there is time at end of term for students to continue learning C.
The current split between programming (5 weeks), Excel (2 weeks), and hardware (3 weeks) does not give enough time for students to mature as C programmers.
Eliminate Excel: The consensus was that students should be able to learn this on their own when they need it (many probably learn it in high school).
This will provide more time for students to gain a deeper knowledge of C. Understanding pointers and the relation to how data is stored in memory is not currently covered in APSC 160. At least some introduction should be given because this is essential knowledge for embedded controllers.
Lecture pattern: Similar to the concerns for CPSC 260, the CS instructors for APSC 160 would prefer to see the same lecture pattern for all sections. Currently in the same term the pattern differs across sections.
Further discussion: A second meeting is required to further discuss the issues for APSC 160. This should be scheduled soon.