COMP1100/COMP1130: Programming as Problem Solving

From Hitchhiker's Guide to CS
(Redirected from COMP1130)

This is the approved revision of this page; it is not the most recent. View the most recent revision.
Jump to navigation Jump to search


Runs Both semesters (1100), Semester 1 (1130)
Languages Haskell (taught)
Lecturers Ranald Clouston, Jooyoung Lee
Course webpage https://comp.anu.edu.au/courses/comp1100/

Unless you’re a Science or Engineering student, this will probably be your first programming course at the ANU. COMP1100 runs both semesters, but most people take it in first semester; COMP1130 only runs in first semester. These courses run together, sharing 3 lectures and the labs. 1130 is an optional extension with one extra lecture per week and slightly different assignments and final exams. You can choose to take either unless you are in the BAC R&D (where 1130 is compulsory). They count basically the same for prerequisites (except you'll need to ask permission to take COMP1140 if you don't take 1130). No prior programming experience is expected, and the course can be quite challenging regardless of whether you have previous experience.

If you are a Science or Engineering student (for instance, taking the CS major in the BSc), you can opt to take COMP1730 instead of this course. 1730 is a comparatively easy course that teaches Python - a very widely used programming language in the sciences (and elsewhere) that is considered very approachable for beginners - with the goal of solving problems and building basic proficiency, rather than understanding computation. If you want to learn to code to solve problems here and there but you don't want to focus on pure computing, 1730 may be a better choice. If you plan to focus your degree on CS, COMP1100/30 will set you up better for courses later on because it gives you a strong theoretical underpinning. You can also take both courses if you like. (COMP1730 is also often considered to have a far-from-perfect approach to teaching and assessment.)

If you want to get a taste of COMP1100 before you start or decide whether 1730 is a better choice, the free online book Learn You A Haskell is excellent (note: it is not the official course text). COMP1100 covers content corresponding roughly to the first 8 chapters. To get a taste of the course, try reading chapters 1 (introduction) and 2. If you want to try coding yourself, you can follow the course's installation instructions here.

COMP1100 teaches introductory computer science concepts, using a language that you may not have heard of: Haskell. Haskell’s what’s called a functional language (as in maths functions). You'll learn what that means, but suffice to say, it will probably look quite different to any programming you may have done before. This is deliberate, as it helps put people with and without programming experience on a more level footing. COMP1100 will gently walk you through setting up a code editor and using a terminal, and move on to concepts including functions, recursion, algebraic data types, polymorphism, trees, and time complexity. Don't worry if these sound intimidating, you'll have 12 weeks to learn it all and your tutors, peers and the CSSA community are all willing to help!

COMP1130 goes beyond 1100 and teaches (untyped) lambda calculus and introductory program proofs. These concepts are very mathematical and theoretical (and beautiful!). If you like maths you will love COMP1130; if not, you will not be disadvantaged. Note that the program proof topic is very similar in scope to the same topic in COMP1600, so even if you don't do 1130 you'll cover this later in your degree anyway.

Like many courses you’ll go on to do, this course has weekly labs. Near the start of the semester you will choose one lab time for the week. You’re strongly encouraged to attend all the labs: they’re an extremely important part of the course and you don’t want to be playing catch-up. The tutor team for the course is always extremely knowledgeable, helpful and approachable.

There are three major programming assignments, a tiny lab attendance & completion mark, and a mid-semester and final exam, both of which are computerised (not written) and programming-heavy.