Schedule theoretically useless computer courses
When it comes to schools with the best computer science programs, the University of Chicago is not among the first universities that come to mind. Indeed, UChicago ranks 28th in the nation for IT. While not terrible, such a low ranking in a popular and highly employable major is hardly impressive for a university that costs more than four times as much as several universities ranked above it, such as the University of Texas at Austin and the University of California, Berkeley, which have in-state tuition fees of around $40,000 and $44,000 respectively.
The problem starts with UChicago’s current undergraduate curriculum: it promotes a more theoretical approach, but doesn’t supplement theory with more applicable and concrete material. Although theory is an essential component of computer science and helps to distinguish between true computer scientists and mere “programmers”, the UChicago computer science department does not prioritize equipping students with short-term marketable skills. Developing skills in relevant programming languages and widely used software tools should be given just as much priority as theoretical knowledge. While the computer science department’s recent decision to restructure its introductory course sequence will allow it to provide more instruction in programming languages, it should continually revise its curriculum to include the most relevant software tools used in IT. ‘era.
To understand how little importance UChicago places on programming skills, just watch the current introductory sequence, especially the introductory course. CS 151 focuses on key concepts but does little to develop the student’s programming and software skills. Although the course provides a satisfying overview of the field by covering the basics of programming, data structures, lists, graphs, trees, and other fundamental topics, these topics are taught through various programming projects in Racket , a functional programming language that is not widely used. in the real world. By the end of the course, a student may have mastered the concepts but will have no experience with programming languages useful for most research or career settings.
While using a language like Racket for an introductory course has some advantages, it has bigger drawbacks. Most incoming students with a background in programming do not have prior experience with the language, as it is more common for languages such as Python or Java to be taught in high schools. Thus, Racket creates a level playing field by ensuring that few individuals have the advantage of extensive language practice. It also introduces students to functional programming, useful in certain areas of computer science such as machine learning. Racket’s benefits, however, end there. Subsequent courses for the major never use Racket again, and the syntax of the language does not relate to any other language used in the rest of the introductory sequence. As fellow columnist Tejas Narayan pointed out, the course further deters students who struggle with the language from majoring in computer science. Amid these drawbacks, Racket’s benefits aren’t enough to justify using the language in the first computer science course.
Universities with more respected computer science programs introduce programming concepts alongside theory in their introductory computer science courses. The Massachusetts Institute of Technology, the premier computer science school, begins its computer science curriculum with a Python programming course. The University of California, San Diego (UCSD) also teaches Python in its introductory course. The first course in the University of Illinois at Urbana-Champaign’s computer science major program teaches students about the features and libraries of Java and explains fundamental programming concepts such as object-oriented programming, encapsulation, and programming. ‘abstraction. These universities, all much higher ranked than UChicago in terms of computer science programs, teach theoretical computer science and useful programming skills.
What is considered a “relevant” programming tool or software will inevitably change over time, and UChicago’s computer science program should adapt accordingly. Computing, more dynamic than other STEM fields, continues to expand its content. Although its theoretical foundations remain relatively immutable, new tools are constantly being developed for use in real-world applications. Researchers at Queen’s University Belfast argue that computer science curricula should inculcate “both the theoretical underpinnings…and also the latest industry needs and trends” to address the shortcomings of early-career computer scientists. The new set of introductory computer science courses will move towards this recommendation by incorporating theoretical components, such as algorithms and data structures, with programming knowledge in Python, which today is one of skills most sought after by employers. Nonetheless, the UChicago CS department should continually modify its curriculum to teach students the most applicable and up-to-date software development tools. This may mean further updating introductory courses to include instruction on new libraries and tools in Python or new programming languages, depending on what is relevant at the time. Teaching this material to students will successfully prepare them for entry into the professional world and ensure that they do not start out with knowledge gaps.
The restructuring of the intro sequence is long overdue, but it should not be the last modification of the program. The CS department should equip students with marketable skills by continuing to adapt to the dynamic trends of widely used software. These skills will eventually open the door to new opportunities that to strenghten the theoretical underpinnings outlined here at the University of Chicago.
Luke Contreras is in his second year at college.