Exam code 25555B
Algorithmic Thinking and Coding
Lecturer: IS NOT Paolo Coletti anymore
Attention: starting from A.Y. 2024/25 this course IS NOT TAUGHT BY PAOLO COLETTI anymore!!!
Course
Scope of this course
- Give you a highly requested skill which can improve your résumé in case you decide (or are forced to) not to become an entrepreneur and apply for a job.
- Open your mind towards a problem solving attitude together with the other module Design Thinking. Clearly each module will show you a completely different aspect of problem solving.
- Give you a strong background knowledge over programming techniques and strategy, obviously not to become a programmer yourself but to be able to talk with your developers and arrange with them precise plans without accepting passively developers' decisions.
Prerequisites
In order to correctly follow this course each student is required previous knowledge on these topics:
- English understanding and reading: you must be able to read and understand spoken English at level B2. If, for example, you have problems reading this website, you will not follow the course correctly.
- Microsoft Windows or Mac: you must already know how to use an operating system in its basic aspects
- File handling: you must have very good practice on how to move, delete, rename, copy, compress, uncompress files and directories. These are activities with which some students have severe problems.
- Internet: you must be able to navigate, send and read email, use basic UNIBZ network features and download files.
Course content
- precourse: things that you must already know (how to use the operating system, files handling, unibz network features) and will thus not be explained during the lessons, but it is better to take a look at the videos below if you have any doubt
- basic Python
- typical algorithms and data structures
- computational complexity
- cryptocurrencies and blockchain technology
How to study for this course
This course is different from the majority of courses you are used to. This course is much more technical than theoretical and it is strictly sequential. This means that you have to adapt your study strategy:
- First of all, you either attend all the lessons (or compensate for missing lessons watching immediately the corresponding videos) or it is really not worth coming to the next one, since you will have a hard life understanding the next topic.
- After each lesson you must repeat slowly on your own everything done in class in order to be sure to have fully grasped the explained concepts before the next lesson.
- Needless to say, do the assigned exercises without copying them from your colleagues.
For the exam, the main difference with respect to other courses is that you have to train much more than study. The content of this course is easy and does not need extensive study, however, it is only with practice that you become skilled enough and know immediately what to do without wasting time.
Exam
The exam is split into three parts. The grade is the weighted average of the three parts, based on how many lessons were dedicated to each of them.
- Practical exercises on Python (on computer, fully open book), worth proportionate to the amount of hours dedicated to this topic
- Questions and exercises on computational complexity (on paper closed books, no material), worth proportionate to the amount of hours dedicated to this topic
- Theoretical questions on cryptocurrencies and blockchain technology (on paper closed books, no material), worth proportionate to the amount of hours dedicated to this topic
Before the exam:
- if you do not use your own notebook, borrow a computer from the library well before the exam and configure it before the exam
- make sure that Anaconda is installed and that you can use Jupyter for Python;
- if you are paranoid and are afraid that your notebook crashes the night before, some days before the exam borrow a computer from the library and check that you are able to log in on your unibz account and that you have, or are able to install, everything you need
Coursework
Students have the opportunity to skip part 1 of the exam with a mid-term, which will be your grade for part 1 at the exam. If you believe that the grade is too low for you, write an email to dr. Coletti at least 7 days before the exam and you will be able to do part 1 at the exam.
In order to be allowed to participate in the mid-term you must submit all the home exercises that are assigned after each lesson by email within the deadline. You do them in groups of 1,2,3,4 people, but the group may not be composed of exactly the same people of the previous assignment. If they are not done properly or contain severe mistakes, you will receive immediate feedback from dr. Coletti. Assignments will be evaluated and you need to do them in a decent way to be allowed to participate in the mid-term, even though the assignments' grade will not be considered for your exam's grade. You are allowed to skip ONE assignment getting 0 in the exercises, but at the second missing one you are excluded.
Students have the opportunity to skip part 2 of the exam with a mid-term. This is completely independent from part 1 and is offered even to students who do not attend.
In order to be allowed to participate in the mid-term you must submit all the home exercises that are assigned after each lesson by email within the deadline. You do them in groups of 1,2,3,4 people, but the group may not be composed of exactly the same people of the previous assignment. If they are not done properly or contain severe mistakes, you will receive immediate feedback from dr. Coletti. Home exercises will be evaluated and you need to do them in a decent way to be allowed to participate in the mid-term. You are allowed to skip ONE assignment getting 0 in the exercises, but at the second missing one you are excluded.
Your grade for part 2 at the exam will be the your second mid-term grade if your mid-term grade is higher than the assignments' average grade, otherwise will be calculated as 70% the mid-term grade and 30% the assignments average grade. For example: mid-term 70% and assignments 60% -> final grade is 70%, mid-term 70% and assignments 90% -> final grade is 76%. If you believe that this grade is too low for you, write an email to dr. Coletti at least 7 days before the exam and you will be able to do part 2 at the exam.
If you have not understood anything of this rule, do not worry, it will be easy after you go through the first part of the course 🙂
Do not:
- Search with Google and come up with a solution that uses techniques and tools not explained in class. All exercises are designed to be solved with what is explained in class and you cannot use other tools to make your job easier, it is not useful for you;
- copy the assignment from your colleagues (excluding obviously the colleagues with whom you are officially working as a group). I will have to inform the Dean if this happens (yes, in the past it happened...);
- send your code to your colleagues. It is fine to help other students and even to work together in more than two, but each group has its own code. If you send your code around, for sure somebody will send it to me very similar and I will inform the Dean (yes, in the past it happened...);
- send the assignment to me without specifying that you worked in a group other people. It is not possible to attach a person after you have submitted (yes, in the past somebody tried it...)
Note that all students have these possibilities, regardless of whether they attend or not. However, at the beginning of each lesson we will discuss together the home exercises and your problems and thus being present has its advantages for your comprehension and you can get extra points for course's improvements and good suggestions.
Files used in class
Videos of lessons
Modifications due to Covid
Exams and mid-terms will be, unless further restrictions arrive, in presence. For any exception or new restriction, read university's official rules.
Attending the course
If you attend the course online, it will be very difficult to watch what I am doing and at the same time do it yourself. The best solution is having two screens: on the former you watch my video and on the latter you repeat what I do. You can use also your home television as second screen. Check which ports does your computer have (probably HDMI, USB Type C, DisplayPort, VGA; search on Google for their pictures) and which ports does your television or second monitor has. A connection cable among two ports is cheap. Alternatively you can watch my video on a tablet or an old computer or a smartphone and use your main computer to repeat my examples.
Python practical part
I will send you the file via email and receive the file back via email.
In this video https://youtu.be/nFV8Dz8SdhY you find instructions on how to install and configure OBS, a program that you can use to record your screen and your face at the same time. Installing the program, configuring, making it work properly and have enough space on your disk (estimation: 200 MB for the program, 200 MB for each hour of exam) is your responsibility, so do at least a recording test of 30 minutes. Have Teams switched off when you use OBS, you must start the recording BEFORE receiving the exam files and end it AFTER sending the exam files to me: I must be able to see you opening the email and see you sending the email back to me. After the recording has stopped, please rename the video with your surname and then send it to me via WeTransfer or any other similar website that you like (which does not force me to register, so not Google Drive). Please rename the video file with your surname. Do not delete it until I have published the grades. My copy of the video will be deleted as soon as I correct that part of the exam.
In case during the exam you need my assistance and would like to call me on Teams, you will not be able to make a video-call as your camera is busy with OBS. In this case you can use the Teams app on your smartphone (unibz does not want us to use WhatsApp or Telegram) using your rear camera to show me your screen. Please do some tests to hold it still and put the screen on focus since with trembling hands and out-of-focus I cannot help you.
If you believe that your computer cannot handle OBS and the necessary programs at the same time, I can propose you a bizarre alternative. You can position a smartphone next to you with the camera pointing at the screen. You will probably need a stick (a selfie stick with a tripod or a TikToker stick will do the job) to keep it in place, possibly horizontal. You start the recording, show your face to the camera and then I would like to see your screen and your shoulder/arm or alternatively your face sometimes popping in front of the camera and saying hallo. Do some tests before to see whether your phone can record for a long time and make sure you have enough space in the phone's memory. Your Camera app has some settings which let you reduce the video quality to 720p 30fps or even less, do it.
Algorithms with Python and Cryptocurrencies and blockchain technology
This part will be an oral examination on Teams. Note that oral examinations are public, so there could be other people connected (who obviously cannot speak!). I will not record the exam. I will ask you to show me your surroundings and there must be nobody around nor any course's material nor any other screen. You may hold an A4 paper with you which has one face written with whatever you want, including course's material. You will be evaluated on what you say, how you say it and on how much time does it take to answer (spending 10 minutes reading your A4 paper every time will penalise you).
Cheating
If I suspect you are cheating or have cheated, I will interrupt the exam and report to the Dean. I remind you that the regulations of the Faculty of Economics prescribe for cheating a suspension of one entire session for all exams and one entire year for this exam. It has already happened to some of your colleagues in the past, so please do not even try to cheat.
FAQs
Q: Which software do I need for Python on my notebook?
A: Anaconda is available for Windows and for Mac. Take care to install Python 3. Watch the videos for details.
Q: How can I type backslash, square bracket, straight vertical, curly braces on the German keyboard of a Mac?
A: Did you buy a Mac with a German keyboard? For programming it is lacking some fundamental keys. Here the shortcuts:
- backslash \ is obtained with ALT+SHIFT+7
- square brackets [ and ] are obtained with ALT+5 and ALT+6
- straight vertical | is obtained with ALT+7
- curly braces { and } are obtained with ALT+8 and ALT+9
Q: How can I type square bracket, at symbol, curly braces on the Italian keyboard of a Mac using VMware?
A: Did you buy a Mac with an Italian keyboard? I do not understand why the left Option-Alt key is working only for the euro symbol. Here the shortcuts:
- square brackets [ and ] are obtained with RIGHT ALT+8 and RIGHT ALT+9
- at symbol @ is obtained with RIGHT ALT+Q
- curly braces { and } are obtained with RIGHT ALT+7 and RIGHT ALT+0
Q: May I fix an appointment to talk with you?
A: Sure, write me an email and we can fix it online or live. Alternatively, you can write me your questions via email or Teams message and I shall answer very soon.
Q: When will the next exam be? Can you give me a hint on the exam's date because I have to catch a plane? Can you move the exam's date? Can you fix the exam's date on the week I suggest?
A: Please stop writing me emails on this topic. Exam's date appears on your timetable as soon as it is official. If you have something to say about it, contact your students' speaker who is the only one who can submit requests on students' behalf.
Q: I may not enrol online for technical or administrative reasons or I forgot to enrol or it is my third attempt and I cannot enrol. Can I do the exam anyway?
A: No, I may not let non-enrolled students take part of the exam. Do not ask me to do illegal things! Ask the secretary whether there is something they can do.
Q: May I use the operating system in a different language?
A: Yes, sure. Your business.
Q: Will the exam be similar to the other exams on this website?
A: Sure.
Q: I lost a file during the practical exam because I did not save it correctly. What may you do?
A: Absolutely nothing. With time spent on exercises you should know the unreliability level of your programs, and how often you have to save.
Q: My files were not copied correctly at the end of the practical exam. What may I do?
A: Checking that the copy is correct, and practicing file copy even during the exam, is your task and is official prerequisite for this course.