Instructor: Adam Dingle
This course is a fast-paced introduction to programming and to data structures and algorithms, with a strong emphasis on learning to write working code. It assumes no previous programming experience.
The course has two major goals.
First, we will learn the Pascal programming language, mostly in the first six weeks of the course. Specifically, we will use the dialect of Pascal understood by the Free Pascal compiler.
Second, we will study fundamental data structures and algorithms and learn to analyze their run-time efficiency.
Throughout the course students will complete many programming exercises in Pascal, both to implement the algorithms we study and also to solve a wide variety of other programming problems.
The weekly lecture for this class takes place every Monday from 9:50 - 12:05 in room S11. The first lecture will be on Monday, October 1.
There is also a weekly lab ("cvičení") every Monday from 14:00 – 15:30 in the laboratory SW1. In the lab we will solve various programming problems together. Each student will sit at a workstation where they can write code during the discussion. The first lab session will be on Monday, October 1.
If you want more programming practice, here are two more opportunities:
I teach a weekly practice session every Wednesday from 9:00 – 10:30 in the laboratory SU1. This is a separate class that you can register for (NMIN161 – Practical Course in Programming for Beginners) and is worth 1 credit. The first practice session will be on Wednesday, October 3.
I also lead a weekly mentoring session where we can work through practice problems and can also discuss topics of interest from your other computer science classes. The mentoring session happens every Friday from 13:00 – 14:30 in room S510. The first mentoring session will be on Friday, October 5.
This is a pass/fail course: you will not receive a numeric grade.
To pass this class, you must fulfill the following requirements by Friday, February 15, 2019 (the end of the exam period):
Complete a number of programming exercises through the semester. I will assign these exercises weekly, and you can submit your solutions to the ReCodEx automated grading system. To pass, you will need to earn at least 160/240 points (i.e. 2/3 of possible points) on these exercises.
Pass a written exam at the end of the semester. I will offer the exam at these dates and times:
10:00 - 12:00 on Mon Jan 21 in S11
10:00 - 12:00 on Mon Jan 28 in S7 (note room change!)
10:00 - 12:00 on Mon Feb 4 in S11
10:00 - 12:00 on Mon Feb 11 in S11
Write a program in Pascal as a semester project. Your program should accomplish something that is interesting, cool, or fun and can be 100-300 lines long, or longer if you like. Here are some project ideas. Please send me a 1-paragraph project proposal by Sunday, January 6. Send me a working version of your project by Sunday, February 1.
Regularly attend the lectures and tutorials and participate in class.
I will publish lecture notes each week that review the information covered in the lectures. For our discussions about algorithms, you may optionally also read selected chapters from the following textbook:
Cormen, Leiserson et al, Introduction to Algorithms, Second Edition (MIT Press, 2001)
There are many copies of this book in the MFF library on the first floor.
This is a rough map of the ground we plan to cover in this class, with plenty of interesting twists and turns along the way.