1 | --- |
2 | type: article |
3 | identifier: uiuc-cs-education |
4 | title: Introductory CS at UIUC |
5 | description: A list of grievances regarding the introductory Computer Science course at UIUC: CS 124. |
6 | datestring: 2023-03-15 |
7 | banner_image: /static/images/uiuc_bardeen_quad.jpg |
8 | links: |
9 | CS 124 syllabus: https://web.archive.org/web/20230221111124/https://www.cs124.org/syllabus/Spring2023 |
10 | ECE 120, a better CS course than "Intro to CS I": https://ece.illinois.edu/academics/courses/ece120 |
11 | --- |
12 |
|
13 | > <span style="font-size:14px"><b>Edit (2023-12-06)</b> <br> Having now taken |
14 | > CS 128 as well as completing a firmware engineering internship in which I |
15 | > produced real designs and programmed deliverables, I affirm that CS 128, |
16 | > despite some pitfalls, would make a far better introductory course than |
17 | > CS 124. I stand by the judgements made here. <br><br> TL;DR: The course is a |
18 | > waste of money because its content is published online by the professor for |
19 | > free, nothing is in person, and it's basically like a coding bootcamp for a |
20 | > CS-irrelevant programming language. It should be redesignated as an |
21 | > optional-but-recommended JVM programming course and replaced by CS 128 as the |
22 | > required introductory course for CS majors and minors.</span> |
23 |
|
24 | <br> |
25 | This is a list of grievances regarding CS 124, "Intro to Computer Science I", |
26 | the required introductory CS course at University of Illinois Urbana-Champaign. |
27 | Under advisement of three software/computer engineering professionals who |
28 | expressed concern over the quality of the course and its instruction, I wrote a |
29 | letter concerning these grievances, sent to course and program coordinators. |
30 |
|
31 | ## Grievances |
32 |
|
33 | ### Grievance 1: Method of delivery, value of the course |
34 |
|
35 | As of writing this, CS 124, considered "traditional delivery", is entirely |
36 | online and has no lectures, discussions, or labs, and quizzes are proctored |
37 | remotely over Zoom. Stripping away in-person interaction between students |
38 | deprives them of development of real world communication and team building |
39 | skills normally acquired in similar courses. Regarding course value, the |
40 | professor exposes the same course materials on the internet for free. Despite |
41 | this, the course is still required of CS majors at the same tuition rate of |
42 | other engineering courses. |
43 |
|
44 | ### Grievance 2: Name-content disparity, validity as a CS course, and status as a program requirement |
45 |
|
46 | CS 124, "Intro to Computer Science I", is dishonestly named and advertised as a |
47 | computer science course when it is, in fact, not. It would be more aptly named |
48 | "Intro to Java Programming" (there is a difference between computer science and |
49 | computer programming). The course inadequately covers the theory, math, and |
50 | architecture of computers and computer programs, i.e. real computer science. |
51 | Students will not fully understand the ramifications of the code they write. |
52 | There is little justification for explicitly declaring it a computer science |
53 | course or requiring it of incoming CS majors. **Basically, it's more like doing |
54 | a coding bootcamp rather than learning computer science.** |
55 |
|
56 | <figcaption>Ironically, |
57 | <a href="https://courses.illinois.edu/schedule/2023/fall/ECE/120">ECE 120</a> and |
58 | <a href="https://courses.illinois.edu/schedule/2023/fall/ECE/220">220</a> would |
59 | be better intro CS courses than "Intro to Computer Science I."</figcaption> |
60 |
|
61 | ### Grievance 3: Choice of programming language |
62 |
|
63 | CS 124 is taught and tested in Java, a computer programming language |
64 | unconducive to learning computer science, and is the only course in the UIUC CS |
65 | sequence that uses Java. A student may have extensive prior programming |
66 | experience (the case for many CS majors) but may be forced to take the course |
67 | if they don't know Java—the programming language tested on the proficiency |
68 | exam—making the course little more than a hindrance to higher education. |
69 |
|
70 | --- |
71 |
|
72 | **In essence, beginning the Computer Science main sequence with this course as |
73 | it is now is nothing but a disservice to students paying tens of thousands for |
74 | a high-quality education.** <span style="font-size:12px">(Edit 2023-12)</span> |
75 | **~~CS 124 needs to transition to in-person delivery and needs to be turned |
76 | into an actual CS (or CS-adjacent) course that uses C or C++, akin to |
77 | [128](https://courses.illinois.edu/schedule/2023/fall/CS/128). Otherwise,~~ |
78 | The course should be redesignated as an explicit intro programming course (e.g. |
79 | "Java/Kotlin Programming") and made "optional but recommended" of main sequence |
80 | CS students, with CS 128 being the introductory course.** |
81 |
|
82 | ## Official Response |
83 |
|
84 | The official response I received is to the following effect for each grievance: |
85 |
|
86 | > 1. The switch to the all-online delivery method was made during the COVID |
87 | > pandemic and it was kept afterwards for CS 124 because the course |
88 | > coordinators were comfortable with it, and student performance improved by |
89 | > most metrics. There are a variety of course delivery methods utilized |
90 | > within the university and more than enough resources are provided for CS |
91 | > 124. |
92 | > 2. Teaching real computer science in CS 124 would make the course far too |
93 | > difficult for students, and real computer science is outside the scope of |
94 | > an introductory course. |
95 | > 3. C/C++ are too hard for CS students to learn, and Java and Kotlin are |
96 | > provided to students to offer exposure to more programming languages. If a |
97 | > student doesn't want to take the course, they should just learn Java to |
98 | > test out of the course. Also, the course instructor really likes Kotlin. |
99 |
|
100 | The only real action taken was the opening of booked locations on campus during |
101 | quiz times, even though the quiz is still proctored over Zoom. Several concerns |
102 | remain unaddressed. |
103 |
|
104 | To the official response, I counter: |
105 |
|
106 | 1. Most other courses have returned to in-person delivery without a hitch and |
107 | there is no reason why the CS department can't do the same. Improvement in |
108 | student performance is easily attributable to plagiarism, or the lack of |
109 | institutional integrity (anecdotally, I've known course assistants simply |
110 | giving solutions to students). The response does not address the concern |
111 | regarding professional development, or quality expectations given course |
112 | pricing. |
113 | 2. Many students entering the CS program already have a good idea of how |
114 | computers and computer programs work, or have written code prior. Holding |
115 | back on exposing students to foundational computer systems knowledge hurts |
116 | them in the long run as it forces them to internalize facts and methods of |
117 | computer programming without underlying explanation—akin to having students |
118 | try to learn calculus without prior knowledge of algebra—and forces them to |
119 | later readjust their understanding of the subject when they are exposed to |
120 | those fundamentals. **The rationale for teaching "introductory computer |
121 | science" in this highly abstracted manner is the result of the pervasion of |
122 | the myth than anyone can or should learn to write code, even though software |
123 | engineering and computer science are—and should be—highly specialized |
124 | fields.** The justification for teaching the course in the manner of a |
125 | computer programing course is weak, and the dishonesty of calling it a |
126 | computer science course remains unaddressed. Even as a computer programming |
127 | course, the course is, in my humble opinion, not worth what is paid in |
128 | tuition. |
129 | 3. **C/C++ are difficult languages to learn, but the payoff is far greater and |
130 | will leave students with a better intuition for how computers and computer |
131 | programs work, which is what a CS course should do.** A lot goes into |
132 | learning a computer programming language, even if you have already written |
133 | code and understand computer science/procedural programming concepts, |
134 | because there are still the syntactical nuances and standard library to |
135 | overcome. If the course isn't explicitly a programming course, the |
136 | expectation that a student should learn an entire programming language to |
137 | take a proficiency exam is completely absurd, especially when no other |
138 | course in the program requires that programming language. Regardless, |
139 | Java/Kotlin aren't great choices for teaching computer science because they |
140 | are not direct analogues to machine code like C/C++ are; a lot of what the |
141 | programmer writes is highly abstracted and handled behind the scenes, |
142 | especially in the case of Kotlin. |
143 |
|
144 |
|