Do the same faculty teach online and on-campus courses?
What is the payment schedule? Can students pay tuition by course? By semester?
Can I try a course before I enroll in the graded pathway course?
Videos
Hello!
So you're pursuing a degree in Computer Science from CU Boulder, huh? Awesome! I'm currently a senior in the CS department and have gained a lot of experience with the CSCI courses here at CU over the past 3.5 years. I've answered numerous questions on r/cuboulder regarding these courses so I wanted to create a sort of guide in order to answer some questions that you may have about the process of earning this degree. I hope this helps! If I left something unanswered please feel free to leave a comment and I will get back to you.
Here goes...
FOUNDATION CLASSES
CSCI 1300/1310/1320 - Intro to Programming
Languages - Python/Java/C++
Content - The basics. Logic, conditionals, loops, etc.
Advice - Alright. Welcome to CSCI! I took the most basic form of this course, CSCI 1300. Therefore, I do not have any experience with 1310 and 1320; however, I imagine they are fairly similar but just run at a slightly faster pace. This course is designed for people with NO programming experience. Therefore, if you haven't been programming since you were a small child there's no need to worry. I came into this course with 0 experience and fell in love with computer science in the process. This course is pretty darn important because, well, it teaches you the basics of programming. You shouldn't have too much trouble with this course. If you are, seek help immediately, you do not want to fall behind in this class.
CSCI 2270 - Data Structures
Languages - C++
Content - ...data structures. Arrays, linked lists, stacks, queues, pointers, basic algorithms, intro to runtime complexity
Advice - Welcome to the 0th weed-out class in the CS department! I had a pretty poor experience with this course due to the professor but it has since improved. This course is pretty similar to 1300 in terms of difficulty (in my experience). It shouldn't be terrible but if you fall behind you need to seek help. This class is extremely important. When you're a senior and are taking technical interviews, a lot of the questions you will be asked will be related to data structures. It'll greatly help you if you take this course seriously and learn the material. It isn't fun to go back and relearn all this stuff 2-3 years later (trust me...)
CSCI 2400 - Computer Systems
Languages - C++/C
Content - Computer memory is the backbone of this course.
Advice - Alright... Welcome to the actual first weed-out class in the CS department. Buckle up because you should not take this course lightly. If you have not gotten down good study habits, time management, etc., now is the time. READ THE BOOK. DO NOT COPY THE LABS. This course has the best and most interesting labs in the CS department hands down. Bomb lab and buffer lab are easily the most memorable labs I have ever completed. Like I said, do them, do not just blindly copy them. If you do copy them and fail to read the textbook, I guarantee you you'll fail the midterm(s) and final. When I took the course I read every page that was assigned and gave the labs my best effort and used the CSEL a lot to get help. This is a great course, but do not take it lightly.
CSCI 3104 - Algorithms
Languages - Python
Content - Algorithms... Search algorithms, runtime complexity, dynamic programming, linear programming, etc.
Advice - Again, a lot like data structures, this course shouldn't be terribly hard but it is very important. Like I said before, when you're searching for a job your senior year, the knowledge you learn in this class is invaluable. Much like Discrete Structures, this class allows you start thinking like a computer scientist. You really learn how to think about a given problem and come up with an approach that'll allow you solve that problem. Learn the material, trust me. It sucks relearning all of this.
CSCI 3155 - Principles of Programming Languages
Languages - Scala
Content - Parse trees, grammars, functional programming, other stuff I don't really remember
Advice - :) Welcome... I'm sure you've heard all about this course. I'll be blunt, this course is not fun. You just gotta suck it up and get through it. The content you learn in this course is very abstract and is not like anything you've seen before and you're using a language you (probably) have never seen before. USE THE RESOURCES THAT ARE AVAILABLE TO YOU. My honest advice is that you should be in the CSEL at pretty much all times when you work on these labs. Much like Computer Systems, if you just copy the labs and don't really learn the material, you will be screwed on the midterm and final. Just try your best... We all have to take this course so you just gotta suck it up and get through it.
CSCI 3308 - Software Development Methods and Tools
Languages - You choose/RegEx/Bash
Content - Different pieces of software that you may or may not use in software development including shell scripting, web development stuff, source control stuff, etc.
Advice - This class is alright, it was not the best when I took it. You cover a lot of material but only on a very surface-level. You learn what things are but it's kind of up to you whether or not you really learn how to use those things. This class is project based so choose something that sounds interesting to you. My advice would be to use this time to learn about development environments and source control, those are two things you are very valuable as move along in computer science.
CORE CLASSES
These are courses that you pick and choose. I obviously have not taken all of them so I can only speak to the ones that I've taken.
**CSCI 3002 - Human Centered Computing
Languages - None
Content - Usability, design, etc
Advice - Arguably the worst course I have ever taken at CU, up there with Database Systems. The content in this course is literally common sense and, in my opinion, will basically not benefit you in the slightest. You do a "project" in the course which for me was just endless busy work (kickstarter video, rounds upon rounds of prototyping, storyboard sketches, etc). The only upside is that it'll be a boost to your GPA. Avoid this course by all means unless you absolutely need the GPA boost.
CSCI 3202 - Artificial Intelligence
Languages - Python
Content - Algorithms part 2 and applying probability to programming
Advice - This class if pretty cool. The first half is basically CSCI 3104 part 2. You learn a lot some more algorithms, that's about it and it isn't terribly hard. The second half of the class is basically all probability with markov models, hidden markov models, bayes nets, etc. First midterm isn't bad but (apparently) the final is brutal. Difficulty definitely ramps up during the second half of the course.
CSCI 3287 - Database Systems
Languages - SQL
Content - Database theory, 3NF, B-trees, seek times, etc.
Advice - I hated this course. I took this course because I wanted to learn how to make a database and how to use SQL which seemed reasonable for a "Database Systems" course. I learned neither of those things (granted the professor got fired 7 weeks into the course when I took it... but still...). You learn a lot about database theory but not actual implementation. I would highly recommend just learning this stuff on your own over a summer/winter break. I found this class to be useless.
CSCI 3434 - Theory of Computation
Languages - None
Content - Regular languages, context free languages, Turing machines, complexity theory, etc. This is basically the theory behind CSCI 3155 imo.
Advice - This is the hardest CSCI course I've taken thus far. The content is not practical by any means and is very abstract but it is definitely very interesting. If you truly enjoy computer science and would like to learn some really neat theory I'd recommend taking this course. But don't take it lightly, it's not easy. The professors for this are really awesome though.
CSCI 3656 - Numerical Computation
Languages - Python/Matlab
Content - Numerical methods for rootfinding, solving linear systems of equations, interpolation, ODEs, etc
Advice - Amazing class, one of my favorites. Elizabeth Bradley is an amazing professor. I found the content to be fairly interesting throughout the semester but it does start to get dry and tedious toward the end. Definitely not a course you want to fall behind in. Overall I loved it tho.
CSCI 3753 - Operating Systems
Languages - C
Content - File systems, kernel stuff, threads, mutexes/semaphores, etc.
Advice - Take this course, it's hard but it's awesome. The labs get to be pretty tough so I recommend definitely getting started on them earlier rather than later and seek help if you need to. There is a lot of content in this course. I highly recommend reading the textbook and going to class and taking good notes. If you slack off and don't pay attention, you're going to be very overwhelmed when it comes time to take the midterm and final.
CSCI 4273 - Network Systems
Languages - C
Content - Network systems stuff (?)
Advice - I haven't taken this course but my roommate has. This course is most likely the most difficult in the entire CS department. If you want to take this course I highly recommend you not be taking other difficult classes during the semester, you're going to have to dedicate a lot of time if you want to do well in this course.
CSCI 4448 - Object Oriented Programming/Design
Languages - Java
Content - OOP, design patterns, UML, etc
Advice - You've probably already been told by numerous people that this class is bad but honestly I don't regret taking it. I failed an interview with a massive, successful company because I hadn't taken this course yet. Project is entirely what you make of it. I originally was dreading it but am actually really happy about the project experience in hindsight. You don't get a whole lot of Java experience at CU so it felt refreshing and good to really learn Java.
CAPSTONE
CSCI 4308/4318 - Software Engineering Project 1/2
Languages - Whatever you/your sponsor wants
Content - Whatever you/your sponsor wants
Advice - You've made it to your senior year! Congrats! I was initially pretty nervous about this course because if you fail it you're basically going to need to take a 5th year. However, this class is really laid back. You'll get assigned to a project/team in the first few weeks of class and you'll work on that project for the remainder of the Fall semester as well as the Spring semester. Additionally, the class content is essentially CSCI 3308 part 2 with some additional guest lectures from people/companies in the industry. This class has been a pretty good experience so far.
ELECTIVE CLASSES
CSCI 3112 - Human-Center Computing Professional Development
Languages - Whatever you want
Content - Whatever you want!
Advice - This is a really cool course. It meets 1 time a week for 50 minutes and you basically just talk with other students about computer science related stuff. The professor for this course is really awesome and is always willing to help in regards to networking and stuff. I honestly don't really know how to explain this course... You make a personal website and then basically do whatever you want. It's a fantastic course if you need a credit or two.
CSCI 4830 - Special Topics
Languages - Varies
Content - Varies
Advice - These are really awesome courses for the most part. They provide you with very specialized and specific content. So if one of them sounds interesting to you you should definitely take it. They aren't very hard in my experience and they're typically always interesting and fun. I would highly recommend taking at least one of these during your time at CU.
MATH CLASSES
APPM 1350 - Calculus 1 for Engineers
Languages - Obviously none
Content - Limits, derivatives, integrals
Advice - Yes this is harder than MATH calc, you should still take this. Unless you feel extremely comfortable with calculus, I highly recommend you start back in Calc 1 even if you have AP/high school credit. This class is pretty hard, as are all APPM courses. This is not at all like your high school calc course, it requires a lot more thinking and effort. The exams are tough but fortunately you have a lot of practice material available to you with the APPM exam archives. Go through all of the past exams before taking your midterms, this will greatly help you.
APPM 1360 - Calculus 2 for Engineers
Languages - Obviously none
Content - More integrals, series, etc.
Advice - This is basically just Calc 1 for Engineers but more difficult and different content.
CSCI 2824 - Discrete Structures
Languages - None!
Content - Logic, proofs, set theory, combinatorics
Advice - This is a really fun course! It also is the gateway to allow you to really think like a computer scientist. The content you learn in this course will come up again and again in many problems that you'll try to solve later on in CS courses and CS in general. It'll be good to get a good grasp on these concepts. I didn't find this class terribly hard and the professors for this course are general very good and are very willing to help you if you need it.
MATH 3130 - Linear Algebra
Languages - None
Content - Basics of linear algebra
Advice - Right now you should be really thankful you're in CSCI and can be done with APPM. I'd highly recommend taking both Linear Algebra and Prob/Stats in the MATH department. However, if you're a masochist and want to really challenge yourself, go ahead and do these in APPM. I didn't find this class to be too bad but I think it mainly comes down to the professor you get.
MATH 3510 - Probability and Statistics
Languages - None
Content - Basics of probability and statistics
Advice - Pretty much the same as MATH 3130. This class shouldn't be too bad and there's some crossover between this and Discrete Structures which is nice.
Edit: This is taking a lot longer than I expected and I need to go. I'll update this later. Hope whatever I have now can help!
Edit 2: Apparently the formatting for this sucks on mobile. Sorry! I'll fix it later.