Welcome, hi, good day, hello, what's up?! I'm the Sketchwhale!
I make games, talk about them, draw comics and post sketches.

søndag den 24. juli 2016

Year 1 of Computer Science (datalogi) at Aarhus University

If you're interested in studying Computer Science (CS) (datalogi is the term used in Denmark), ‎here are some reflections on the first year of CS at Aarhus University (AU). I'll address workload, difficulty, expectations, and some grievances.

About the Danish Education System.

For the most part, education is free in Denmark (elementary school, secondary, higher education) for citizens. To enter a university, the field you study might have a limited number of spots and if so, a minimum grade average is set, based on your high school performance. Fields like CS have for many years had trouble attracting enough students, and so there have been no formal limit for neither number of applicants or grade average.

About Me

I have a previous bachelor's degree in Japanese Studies, so I'm a few years my classmates senior and probably ha‎ve a different concept of what is important in university.
I didn't have any programming experience until two years before starting CS. By the end of my first undergraduate degree I had begun playing around with C# (which, for the uninitiated, is a programming language created by Microsoft and used in the Unity game-making program) and eventually landed a small job that, although unrelated, got me into noodling around with both JavaScript and databases.

Beginning at a Possible End: Dropping Out

CS is said to be tough. The dropout rate is high and I can now personally attest that you need to want it, be smart, and work hard to pass even the first year. The dropout rate is a running joke at AU and people often attribute it to freshmen misunderstanding CS, thinking it's about learning how to make video games. From my experience, this misunderstanding is not that widespread. In all university fields, people quit for a myriad of reasons including but not limited to: illness, family troubles, financial problems (yes even in Denmark), lack of interest, change of mind, and difficulty of subject. If you quit, you quit. I don't believe it's anything to feel bad about, it just wasn't right. But the sooner you realise you aren't  in the right place, the better. If it doesn't feel right, trust your instincts.

Structure of Computer Science

For the past years CS has been divided into half-semesters (let's call them quarters) for the CS subjects and possible whole-semester subjects for later subjects further down the education, including supplementary classes in different fields like mathematics. This means that the first year has 12 classes, 3 in each quarter, each quarter ending in a exam period. This in turn, means that unlike most other studies at AU, you don't get any vacation until summer. Nothing in autumn, winter or spring. No Christmas nor Easter. Oh yes on paper you get vacation, but not in reality. Adding to this, each class has a weekly mandatory hand-in that might be manageable in the first quarter, but quickly becomes rather tough later on. If you don't hand it in on time and all hand-ins aren't approved by the  beginning of exams, you won't be eligible for the exam. In other words, hand-ins quickly become like constant exam-like situations, so the first year quickly becomes one long exam. This is very, very stressful. So much that some have to dropout due to the stress.

The Subjects of Year One

From here, it might be best to simply describe each class of the first year, so give an understanding of the workload, contents and difficulty of CS.

First Quarter

  • Perspectival Computer Science (Danish: Perspektiverende Datalogi)
Tools: Some archaic database stuff.

Thought of as an easy subject and often derided as being to close to humanities, this is an introduction to writing academically, it gives you a chance to learn LaTeX (program to write academic documents professionally and useful for writing mathematical symbols). Yes, it is relatively easy, although some of hand-ins can be tough to wrap you head around at this point. You get a real quick introduction to many of the subjects later in the education, many of which I have yet to have had. Basically, if none of the subjects makes you even a little interested, CS isn't for you. The exam is just having completed all hand-ins.

  • Introduction to Programming
Tools: Java

Very basic introduction to Java programming, using some playful learning programs (Greenfoot and BlueJ). The class is a waste of time for people who already know some coding and isn't very good at teaching coding for those who don't know. But this is your best chance to wrap your head around the basics of coding (variables, loops, if-statements, functions/methods) and some algorithms. Take advantage of the easiness to get really good, the lull won't last. The exam is silly. It's a speed test about writing some predefined simple programs.

  • Calculus 1
Tools: Math software of your choice.

Continuation of high-level high school math. I found it tough, but am continually angry at myself for listening to the advice my seniors gave me: They said I shouldn't use a computer, because doing the work by hand would teach me better. This is idiotic and applies for Calculus 2 as well. Use a computer and focus on understanding the math instead of doing it by hand and wasting time on finding small mistakes in your homework.

Second Quarter

  • Computer Architecture

Image of how stacks work. From Structured Computer Organization, fifth edition.

Tools: IJVM, Java, C, Assembly

Tough subject. Big hand-ins. Large curriculum. You work in groups of 2-3 people. Don't let one person do the hand-ins, be firm about this. Only this person will be prepared for the exam. The subject is about how a computer works on the lowest levels and gives you a great respect for what the hell is going on inside all of our devices. You'll work with various assembly-like languages and maybe a bit of C, although that's too high level for most of the class. Multiple-choice exam.

  • Programming 2

Coding an applet in Java. Horrifying ugliness, gratifying results.

Tools: More Java

Introduction to Programming gone wild. This class is much more difficult than Introduction to Programming. So much in fact, that it seems silly they're allotted the same amount of time. It's a very bureaucratic class with an oral exam. The weekly hand-ins can be a little confusing in what they're asking for, but the execution isn't that complicated.

  • Calculus 2
Tools: Math software of your choice.

Calculus 1 and 2 should be one class with a single exam. Pure continuation of Calculus 1. The exam is a 4-hour doozie. The way the questions are phrased can (in my opinion) differ widely from the preparation material, making it difficult to prepare. Not really advice, but be aware.

Third Quarter

  • Interaction Design
Tools: Your imagination, pen and paper, web design tools.

If you ask around, most people dislike this class, claiming it be too reminiscent of humanities. This if of course ridiculous. Most people in CS have no clue of what humanities are and I can attest that Interaction Design at AU is simply a pale and unprofessional sibling of any of the humanities. The class is supposed to help you understand and describe design and work with it iteratively. It fails at this and the exam is simply about trying to get into the mind of the teacher. You can in fact easily pass the exam with mere guess work, as long as you attend the first lecture and get an understanding of the teacher. It's a bit mean to be so critical, but I was left with little to make me respect the class. There's room to use you HTML, CSS and JavaScript skills from the concurrent Web Technology class.

  • Algorithms and Data Structures 1
Tools: Mostly just pen and paper.

Visualisation of an algorithm. From Introduction to Algorithms, thirds edition.

Now things start to get computer science-y. Learn about a lot of algorithms and what they do. There's a lot of information and the book is dense as fuck. By now you will also be quite tired from lacking rest (remember, you haven't had real a break in more than 6 months now). This class is to me, the definition of CS. You use programming, but simply as a tool to perform tasks. You might even marvel a bit at what you can do with very little code in this class.

  • Web Technology
Tools: Oh boy... too many.

A weird class. You work a website both front-end and back-end. So many web technologies to wrap your head around, it's dizzying. Again, like computer architecture, groups of 3, don't let one person do all the work. As mentioned, you get to use CSS, HTML, JavaScript, Java and various other tools.

Fourth Quarter

  • Programming Languages
Tools: Emacs and Scheme

Not too difficult, but the hand-ins can be enormous, making it tough. Your first introduction to how the linguistics of programming languages. You work functional programming languages and use Scheme. You'll also be pushed to learning emacs. I didn't enjoy emacs but some start to swear by it. Enjoy.

  • Algorithms and Data Structures 2
Tools: Pen and paper.

Like Algorithms 1, just bigger and badder. Like Calculus 1 and 2, they really ought to be one class.

  • Regularity and Automatons
Tools: Pen and paper, Java

Works together with Programming Languages to give you an understanding of compilers and how a computer interprets languages. The formality of the class can make it extremely difficult and many people simply freeze at the oral exam. The hand-ins are manageable but the subject itself is really really difficult. There can be a lot of Java programming in this class.

Finishing up

So that's year one. I hope you get an idea of the amount of work, the focus that goes beyond mere coding and the breath of classes. If anyone ever reads this post and has questions, I'd love to answer them. Can I recommend CS at AU? Yes with a but: I don't quite believe the workload needs to be so severe. Most of what I learn gets put in my short term memory, and I'd rather get a little better at less stuff and remember it for later on. But as far as I understand, the first year and a half are simply introductions to all the fields of CS, so it makes sense to put us through all this work, to get a wide perspective.

Ingen kommentarer:

Send en kommentar