FAQ

Subject’s contents, tools

  • Can I finish the subject without using Linux?

    Yes. It is possible to complete Programming 1 without installing Linux, however

    • You will not be full experience that we wish to convey
    • Some labs may require extra work to get them running outside of UNIX operating systems.
    • Not all labs are completable without using Linux

    Completing Programming 2 without Linux is difficult at best.

  • Does anyone really use Linux?

    Of course! Always use the tool most suited for the job. I’d argue, that Linux might be the most used operating system in the world, but nobody really notices it. Unfortunately there is no good metric to compare the usage of operating systems accurately.

    Desktops and laptops are dominated by Windows and MacOS. These OSes work well on the desktop. They are also what people have been using out of habits for years.

    Linux is dominating on microcomputers and devices. One popular example would be a Raspberry Pi. It is also quite likely that you are using the Linux Kernel if you are using an android smartphone. You might also find a Linux hiding in your TV, set top box and your router. Each time you drive on a bus, most likely the advertising and information screens are also powered by Linux.

    Linux is also a dominating OS in the server world. Most of the web, e-mail, game and other servers in the world are running Linux. Similarly the world’s most fastest computers (also known as supercomputers) are almost exclusively running Linux.

  • Why are we using Geany? Can I use something else?

    Geany beauty lies in its simplicity. Geany is not overwhelmed with complicated functionality or bloat.  Your primary focus, when starting to program, should be how to think like a programmer and learn how to code. Later on you can use what suits you best.

    However, you are allowed to use an IDE of your own preference. You are not locked into Geany. In that case you are responsible to configure it properly and know its quirks.

  • Why are we using Linux?

    Linux is a tool as any other. In life, you have to pick the right tool for the job. In software development, Linux is often the preferred operating system.

    As a student it’s also important to not be stuck on one platform, but rather discover different platforms and tools. Find out their strengths and weaknesses.

  • Why are we using UML? Is anyone even using it?

    Yeah, it is being used. The requirements for producing documentation differ greatly. While these requirements might be minimal in a startup or a small company, they are extremely important in banking, military, governance etc. It may also happen that instead of UML you may need to use some other formal way of documenting algorithms. In that case knowing one will give you a leg up when learning another.

    Being able to document processes and systems is important when there are large teams working on a project – everyone must be able to understand it the same way. Documentation, including modelling systems, helps us reduce time wasted on double-checking every detail and unnecessarily long meetings.

     

  • Why C? Why not Java, Python, ...?

    The C language has many perks that we can take advantage of and why it has been chosen.

    First, it is suitable for your curriculum. This course is good for curriculums where you may need hardware level programming – e.g. programming for microcontrollers.

    Secondly C is a good language for pedagogically reasons. The fact that it is very close to hardware gives you a superior understanding of why the things in this world work as they do. It will help you understand the root of the problems instead of the symptoms. This in turn will help you solve the problems more methodically. This process of thought will help in any language you might encounter in the future.

    Third, it is a general purpose programming language. This means you can program anything you wish. It is however a good time to remind you to choose the right tool for the job – there is (most likely) no good reason to try to do web development or a highly complicated graphical program using C.

    Fourth, it’s a simple language. There are not many complex features in the language that are offered by other language. This allows you to focus on your language and understanding of programming without the extra confusion of understanding and choosing between complex features.

    Last, I think it’s important to mention that once you have mastered one language, it is very easy to transition into another. Once you are comfortable with programming in general, learning different languages and adjusting to their way of doing things will be simple. The purpose of Programming 1 is to teach you algorithmic thinking and basics of programming, C is just a tool to implement it. In general, there are no developers who only know 1 language.

Subject’s organization

  • Can I use my own computer during the lab?

    Yes, you can. However then you will be responsible that your software is compatible and in working order.

    In some labs you might be required to use the lab computers – e.g. we might use a library that you do not have installed.

    You will not be able to use your devices during the test and the exam!

  • Can I use my own computer during the test / exam?

    No.  You’re only allowed to use the lab computer during the test and the exam.

  • Do i need to do advanced tasks?

    To get the maximum lab points, you should complete at least a few advanced tasks. You don’t need to complete all of them.

    Main purpose for solving advanced tasks is to grow your experience. Programming is a skill that needs practicing to master.

    Additionally the advanced tasks give you points which help you compensate for labs that you didn’t complete or submitted late. It is also a nice way to earn extra points so you can max out your lab points module a few weeks earlier – less stress in the end of the semester because of lab points.

  • How do I get feedback on submitted tasks?

    Feedback for labs is given in class.

    Feedback for homework is found on Moodle. Open the homework task and expand the comments section.

    To get feedback on your test or exam, write to me to schedule a time so we cna go through the work.

  • How do I know what tasks I have not yet submitted?

    You can get an overview of your weekly points by going to grades in Moodle. Points for each week will be written there. Note that the points are usually updated every 2 – 3 weeks.

    If you are unsure what is missing, come and ask me during the class or on Mattermost.

  • How many points are tasks worth?

    The points depend on the task complexity.

    Typically a base task will give around 1.50 – 3.00 points when submitted on time.

    Advanced tasks are usually worth between 0.50 to 1.00 points. Weekly homework is also within similar bounds.

    In some cases a more complex task may give more points or a task that is divided into many small subtasks may give less per part.

  • I already know how to program, do I really have to do everything?

    No. In programming 1, you can complete an early assesment of your skills. For this you will need to write a test and do a homework in the beginning of the semester.

    The task must be solved in C programming language. Task topics are related the topics in the subject.

    Upon a successful completion, you get the exam prerequisite and you will not need to attend labs. After that, you will still need to do both homework and the exam. After that, you will have completed the subject.

    Programming 2 can only be completed in full.

  • I didn't finish the task in the class, what now?

    You can submit tasks up to 3 weeks late. As an exception, you will not be able to submit late labs for which the solution has been posted as an example or after the lab lock deadline.

    Base tasks can be submitted a week after the task is given without a penalty. When submitting 2 – 3 weeks late, a points reduction of ~25% will be applied. Points reductions are not applied to advanced tasks.

    Tasks are not accepted after 3 weeks have passed from giving the task.

    Example: On the 4th week, a lab base task worth 3 points is given. This task can be submitted on weeks 4 and 5 for full 3 points. On weeks 6 and 7, the task is still accepted, but you will get 2.25 points. From week 8, it is no longer accepted.

    To submit a lab task, let us know in the class and we’ll check it.

  • I got sick / am in isolation, what now?

    Write to me on Mattermost before the class! This way you will not receive any late penalties for those weeks. Submit the lab tasks once you’re feeling better and able to come back to class.