When you come to the United States as an international student, there is a ticking clock and a host of restrictive rules to contend with. Due to regulations making academic and career experimentation riskier, I decided on my major before I even got to the U.S. I wanted to major in computer science.
The University of Wisconsin-Madison’s Department of Computer Science — housed today within the School of Computer, Data and Information Sciences in the College of Letters & Sciences — was born in the 1960s as the Department of Numerical Analysis. The department took its present name in 1964.
Today, computer science is the largest degree program at UW-Madison. From fall 2018 to the fall 2022 semester, computer science was the second-fastest growing major. This comes as no surprise to me, considering the skills acquired in this major are highly transferable, and there are many careers in technology a student can pursue. Graduates often go down the software development path, but occupations like UX design, solutions architecture, software technical writing, project/product/program management, analytics, developer relations and others are also options.
Computer science is a lot more than just programming. As a discipline, computer science overlaps with math, philosophy and linguistics. The major involves the study of logic and proofs, getting into the nitty gritty of software and hardware and understanding what makes algorithms quicker or slower. As computer science majors at UW-Madison, students gain exposure to a breadth of sub-disciplines through project-based learning.
Students cannot be admitted directly into the major; they must declare the major upon meeting course and GPA requirements by filling out a form. My earliest coursework involved taking calculus and the introductory programming sequence, which allowed me to declare the major at the end of freshman year.
My choice for the requisite calculus sequence was the MATH 221 and MATH 222 track, following which, students are required to take two additional math courses beyond 200-level calculus of their choosing. The programming sequence, taught using the Java programming language, starts at CS 200. While students can test out of CS 200, it helps to have the experience under your belt before taking on CS 300 and CS 400 — courses that introduce algorithms, programming paradigms and data structures. These classes also introduce the idea of complexity, a denotation of how much time or space is needed to run an algorithm.
Courses under “basic computer science” allow students to interact with computers at a lower level. In CS/ECE 252, students are introduced to logic gates, assembly language and different radixes — the number of unique digits used to represent a number. While most of us are aware of decimal representations of numbers — numbers represented with a base 10 — students learn to work with other representations like binary (base two), octal (base 8) and hexadecimal (base 16). In CS/ECE 354, students work with assembly language and the C programming language to get a grasp of how memory is partitioned to accommodate different processes running in a computer.
An integral part of the computer science curriculum is discrete mathematics: a branch of math that deals with logic, boolean algebra, proofs, relations, functions and discrete structures like sets and graphs. Taught in CS/MATH 240, this marks a shift from calculus and geometry and forms the bedrock of theoretical computer science.
Students must take a theoretical computer science class that builds on concepts taught in CS/MATH 240. Of the two choices, most students opt for CS 577. Applying logic and proof techniques, students are expected to come up with optimal complexity algorithms to mathematical problems. This is typically one of the hardest classes in the major.
Computer science majors at UW-Madison get to choose from a host of largely project-based advanced classes that span several sub-disciplines. In total, students must take two classes that focus on software and/or hardware, one class that emphasizes practical application and two advanced electives of their choosing. Students can delve into operating systems, information security, artificial intelligence, software development methodologies, database design and implementation, human-computer interaction and so much more.
If you’re considering a STEM major and don’t mind math and programming, computer science is an option, and even if you’re not the best at those things, it is worth a shot. For those who cannot pull off or fit a computer science major, the 14-credit certificate is an option worth considering. Either way, the skills acquired can go a long way towards career and financial security while also proving to be mentally stimulating.
Anupras Mohapatra is a former opinion editor for The Daily Cardinal and currently serves on the Editorial Board. He is a senior double majoring in Computer Science and Journalism.