What Do I Take Next?

I Took So I should take
CS 1110 - Introduction to Computing Using Python CS 2110 - Object-Oriented Programming and Data Structures CS 2800 - Discrete Structures
CS 2110 - Object-Oriented Programming and Data Structures CS 2800 - Discrete Structures CS 3110 - Data Structures and Functional Programming CS 3410 - Computer System Organization and Programming
CS 2800 - Discrete Structures CS 2110 - Object-Oriented Programming and Data Structures CS 3110 - Data Structures and Functional Programming CS 3410 - Computer System Organization and Programming
CS 3110 - Data Structures and Functional Programming CS 3410 - Computer System Organization and Programming An elective class
CS 3410 - Computer System Organization and Programming CS 3110 - Data Structures and Functional Programming An elective class

CS 3410 or CS 3420?

This is difficult to answer, since almost nobody has taken both. Here are some considerations:

  • 3410 is a lot of work. Splitting it across 2300 and 3420 might be more manageable.
  • 2300 + 3420 will go more in depth than 3410 alone can.
  • Many classes (including requirements!) have 3410/3420 as a prerequisite, and you may not want to delay them in order to take 3420.
  • Most people take 3410.

I Have No Idea, But I Took CS 3xxx

Don’t know what to do for electives? Here’s a few options.

Programming languages: CS 4110 - Programming Languages and Logics. Also consider CS 4120 - Introduction to Compilers for the implementation (compiler) side of things.

Systems programming: CS 4410 - Operating Systems, a requirement.

Computer graphics: CS 4620 - Introduction to Computer Graphics. Also consider CS 3152 for actually making a game.

Artificial intelligence: CS 4700 - Foundations of Artificial Intelligence. Also consider CS 4740—Introduction to Natural Language Processing for the language/linguistics side of things.

Web development: CS 2300 - Intermediate Design and Programming for the Web (also, INFO/CS 1300—Introductory Design and Programming for the Web, CS 3300 - Data-Driven Web Applications). There may also be mobile app development (or check out CU AppDev).

I’m Feeling Ambitious

Note: any CS class is doable given the right combination of hard work, dedication, and experience. While the classes listed here were feasible for those recommending them, professors and curricula change, and your experience may be different.

CS 3152: if you have or can find a team, this is your chance to make a video game. You may need to apply, however.

CS 4120 - Introduction to Compilers: the infamous compilers class, for those of you who wonder how exactly your source code gets turned into something your computer can actually run. At this time, the class is offered infrequently, so if you’re interested, take it as soon as you get the chance. (But this writer has heard about plans to offer it yearly.)

CS 6360—Educational Technology: talk to the professor before enrolling, but if you can gather a team, this class lets you build a project of your choosing, so long as it helps teach people something. And while you’ll be reading and discussing papers, this is your chance to learn about all sorts of applications from an automatic Python grader to Minecraft in the classroom.

Edit this page on Github: whatdoitakenext.md

Edit me on GitHub