Recommendations for getting started in programming and cognitive modeling
Are you interested in learning programming or taking a look at the modeling of mental or social processes?
Here we have collected some recommended links to get you started in this exciting world. (Please note that these links lead to resources outside the TUD and we assume no responsibility for the content provided there).
Video introduction to the topic
Effort: Approx. 45 minutes
Costs : Netflix subscription must be available
Description : A 'gentle' introduction to get a first idea of the subject matter. The documentary "Programming " provides a good basic understanding of the basic (technical) concepts and history of programming in just under half an hour. Building on this, the video " How to Learn to Code" by YouTuber CheersKevin gives you a good basic feel for how to organize your own learning process.
Advantages: Little time required; good starting point to shape the further learning process
Disadvantages: Does not offer the opportunity to try your hand at programming beforehand
CS50's Introduction to Computer Science
Time required: approx. 12 weeks, 6 - 18 hours per week
Costs: free of charge
Description : Harvard University makes its introductory course in computer science available free of charge on the edX.org learning platform. It contains the recorded lectures as well as so-called problem sets, consisting of 1 to 3 programming tasks, which you have to solve after watching the individual lectures. After 'submission', you receive feedback within seconds as to whether your solution was successful. With the help of these tasks, you will learn the general basics of programming as well as how to use the programming languages C and Python during the course.
The course is time-consuming, but can easily be completed at a pace of your own choosing.
Advantages: Provides a very solid foundation knowledge; there are numerous social media channels where questions can be asked if you get stuck; you don't have to pick and choose what you want to learn at the beginning; problem sets provide a realistic yet enjoyable introduction to programming
Disadvantages: Time-consuming, as the introduction to the topic is already relatively deep
Note: The course is available free of charge. A certificate can be obtained after completion of the course for an additional charge of €82, but this is not obligatory. All resources of the course are freely available, the non-acquisition of the certificate does not lead to a disadvantage at any point during the learning process!
You can access the resources here.
Online tutorials, books, etc.
Effort: individual
Costs : individual, but generally low to none
Description : Few skills are as easy to learn free of charge via the Internet as programming. There are numerous online courses available, many of which are even free of charge.
It is therefore advisable to do your own research. Possible starting points include the websites Brilliant, Tutorialspoint, edX, and SoloLearn. Each of these websites has its own approach to imparting knowledge, so everyone can choose something that suits their own learning needs.
Books are another option. The SLUB itself provides many resources, some of which are even available online. Book recommendations can be found under programming languages.
Advantages: Individual learning in the way that suits you best
Disadvantages: Spoiled for choice!
Note : To start programming, you usually have to decide on a programming language in advance. Information on this can be found under Programming languages.
Find your own project
Effort: individual
Costs : individual, but usually low to none
Description : If you want to learn programming, it often makes sense to look for your own project that you want to implement. Basic knowledge of programming should be available in advance, but most of it can be learned through self-study with (online) resources.
Advantages: Usually highest learning success, higher motivation as you have your own project
Disadvantages: Can be very frustrating at times - it is worth having someone with more programming knowledge to ask for advice if you are stuck with the resources you have chosen.
Note: Projects can really be anything you can think of. From a simple program to play Tic Tac Toe to your own app.
Django Girls e.V.
Effort: 1 day
Cost: free of charge
Description : During a one-day workshop, women can gain their first experience with programming in a pleasant atmosphere.
Advantages: Relatively little time required, getting started is made easier by the presence of mentors
Disadvantages: Only a first 'taster', for basics you have to continue learning on your own afterwards.
Note: Only open to women
You can find access to the Django Girls Dresden association here.
TechLabs e.V.
Effort: approx. 1 semester (~3-4 months), approx. 10 hours / week
Costs: free of charge
Description : TechLabs is a young association that can now be found in eight cities worldwide (as of May 2020). Its aim is to provide young people with state-of-the-art tech education - regardless of their academic background. Each semester, there is the opportunity to apply to one of the eight locations for one of four tracks: Artificial Intelligence, Web Development, User Experience and Data Science (for Python or R). Depending on the track you choose, you spend a semester learning the necessary basics together with the other participants and with the help of online learning materials, before implementing your own project together in the second half of the semester.
Advantages: Learning in a group, opportunity to implement your own project, mentors who accompany you on your learning journey
Disadvantages: High time commitment, closest location from Dresden: Berlin
Note: TechLabs is not tied to student status, i.e. professionals, pupils, etc. can also apply without any problems.
All tracks (with the exception of Artificial Intelligence) can be taken without any prior knowledge. The only requirement: motivation to learn!
You can find access to the TechLabs association here.
To learn programming, you usually have to decide in advance which programming language you want to learn. There is no "one" language to start with, and there is absolutely no reason not to learn several more later on. As most programming languages are very similar in their basics, learning additional languages is usually very straightforward.
If you already know roughly what you want to learn programming for
If you already have an idea of what you would like to use your programming skills for, you should research in advance which language is most suitable for this. In most cases, this research will also reveal numerous resources that can be used to learn the chosen language.
Entry-level languages for those still undecided
Scratch
Scratch is an easy and playful introduction to the world of programming, but still manages to introduce important programming concepts such as loops and if statements. In this way, Scratch is a good preparation for 'real' programming and offers a lot of fun at the same time.
You can access the resource here. Further 'playful' offers can be found here. A book suitable for children to get started with Scratch (and Python) can be found here.
Python
Python is often recommended as an introductory language. Python is free, easy to learn and versatile. Thanks to the very large community, there are numerous resources available for learning and answering questions, which makes the learning process much easier. To get started, we recommend this video. You can access the resource here.
To be able to program with Python, you must first install a distribution. We recommend Anaconda for this.
If you are not yet confident in using a distribution, you can use Google Colab instead. This is a free resource from Google that allows you to write and execute Python code within your browser.
Recommended materials for getting started with Python:
Type |
Resource |
Notes |
Read more |
Free access via the author's website. |
|
A very gentle and playful introduction to programming with Scratch and Python. Also suitable for children. |
||
Free access via the SLUB |
||
video |
Free access via YouTube. Detailed video series designed for beginners. |
|
Free access via YouTube. Introductory course (approx. 6h) for absolute beginners. |
||
Website format |
Free of charge, very detailed. |
R
R is the standard for statisticians. It is easy to create meaningful graphics, it is free of charge and is well suited for simple to moderately complex data analyses. Even if the syntax of the language is somewhat unusual, it is easy to learn even as a beginner. You can find access to the resource here. To be able to program with R, you must first install a distribution. We recommend RStudio for this.
You can find free tutorials on the Tutorialspoint website and YouTube. An interactive way to learn how to use R directly in RStudio is offered by swirl.
Matlab
Matlab is the standard in the neurosciences. It is very well suited for complex data analysis and modeling. Matlab can be learned through good (self-) training options. Matlab is subject to a fee, but free access can be obtained through TU Dresden.
To get started with Matlab, we recommend Matlab for Behavioral Scientists and MATLAB for brain and cognitive scientists. Both resources are available via the SLUB.
Julia
Julia is a relatively young programming language that is recommended among both computer scientists and neuroscientists. Like Python, it has a user-friendly syntax that is easy to learn. You can find access to the resource here. A collection of self-study resources can be found here.
If you start programming, you will usually quickly reach a point where you can't get any further. This is usually due to so-called bugs (program errors), which manifest themselves in the form of error messages. This is completely normal and happens regularly, even to the most experienced programmers. It is not always easy to recognize what exactly has gone wrong, especially at the beginning.
In such cases, you can proceed as follows:
- Copy the error message and google it. Numerous websites such as Stack Overflow are designed for sharing programming problems and offer community-based answers for solving the problems.
- Read the language documentation. Every programming language usually has documentation that describes exactly how to use it. Problems can often be solved using this. To find the documentation for the desired language, simply google "[programming language name] Documentation" (e.g. "Python Documentation").
- Caution: At the beginning, documentation can be a bit overwhelming. It is therefore advisable to start working with them once you have familiarized yourself with programming.
- Ask for personal advice. Many problems that you have at the beginning can be easily solved by people with more programming knowledge (even if they come from other languages).