Index

joshstock.in / 3d7018e

Source for serving and static templating/compiling of https://joshstock.in.

Latest Commit

{#}TimeHashSubjectAuthor#(+)(-)GPG?
19206 Dec 2023 21:24b98dfd5Update articleJosh Stockin17790G

Blob @ joshstock.in / site / content / blog / uiuc-cs-education.md

text/plain8357 bytesdownload raw
1---
2type: article
3identifier: uiuc-cs-education
4title: Introductory CS at UIUC
5description: A list of grievances regarding the introductory Computer Science course at UIUC: CS 124.
6datestring: 2023-03-15
7banner_image: /static/images/uiuc_bardeen_quad.jpg
8links:
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>
25This is a list of grievances regarding CS 124, "Intro to Computer Science I",
26the required introductory CS course at University of Illinois Urbana-Champaign.
27Under advisement of three software/computer engineering professionals who
28expressed concern over the quality of the course and its instruction, I wrote a
29letter concerning these grievances, sent to course and program coordinators.
30
31## Grievances
32
33### Grievance 1: Method of delivery, value of the course
34
35As of writing this, CS 124, considered "traditional delivery", is entirely
36online and has no lectures, discussions, or labs, and quizzes are proctored
37remotely over Zoom. Stripping away in-person interaction between students
38deprives them of development of real world communication and team building
39skills normally acquired in similar courses. Regarding course value, the
40professor exposes the same course materials on the internet for free. Despite
41this, the course is still required of CS majors at the same tuition rate of
42other engineering courses.
43
44### Grievance 2: Name-content disparity, validity as a CS course, and status as a program requirement
45
46CS 124, "Intro to Computer Science I", is dishonestly named and advertised as a
47computer 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
49computer programming). The course inadequately covers the theory, math, and
50architecture of computers and computer programs, i.e. real computer science.
51Students will not fully understand the ramifications of the code they write.
52There is little justification for explicitly declaring it a computer science
53course or requiring it of incoming CS majors. **Basically, it's more like doing
54a 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
59be better intro CS courses than "Intro to Computer Science I."</figcaption>
60
61### Grievance 3: Choice of programming language
62
63CS 124 is taught and tested in Java, a computer programming language
64unconducive to learning computer science, and is the only course in the UIUC CS
65sequence that uses Java. A student may have extensive prior programming
66experience (the case for many CS majors) but may be forced to take the course
67if they don't know Java—the programming language tested on the proficiency
68exam—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
73it is now is nothing but a disservice to students paying tens of thousands for
74a 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
76into 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,~~
78The course should be redesignated as an explicit intro programming course (e.g.
79"Java/Kotlin Programming") and made "optional but recommended" of main sequence
80CS students, with CS 128 being the introductory course.**
81
82## Official Response
83
84The 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
100The only real action taken was the opening of booked locations on campus during
101quiz times, even though the quiz is still proctored over Zoom. Several concerns
102remain unaddressed.
103
104To the official response, I counter:
105
1061. 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.
1132. 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.
1293. **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