26. Cogmaster Lectures

Ateliers de Programmation pour les (Neuro)Sciences Cognitives / Programming for Cognitive and Brain Sciences

This year (2021-2022) the lecture is split in 3 independent modules:

  1. PROG Introduction to Programming with Python (first half of first semester)

    This series of lectures targets students with little or no prior knowledge of programming. It will introduce the fundamentals concepts of coding : variables, expressions, functions, control structures, input/ouput. The course will make use of https://pythontutor.com/

  2. PCBS Programming for Cognitive and Brain Sciences (2 sessions: second half of semester 1 and first half of semester 2)

    The purpose of this module is to train students to solve typical tasks encountered in cognitive or neurosciences: (creation of stimuli, programming of real-time experiments, data manipulation and analysis, simulations…), using Python ou R. The course consists of short lectures followed by hands-on exercises.

  3. PROJ Programming project (second half of semester 2)

    Each student selects a cognitive science topic (psychology experiment, simulations of a cognitive system, etc, …) and implements it using a programming language. The project’s development should be public on github.




Slack discussion forum

http://cogmaster-pcbs.slack.com (Click here to join). Use the #general channel to ask questions.

26.1. Course description

26.1.1. Objectives

The purpose of the PCBS course is to make students able to write clean code in order to solve the tasks that are typically encountered in cognitive or neurosciences (data manipulation and analysis, creation of stimuli, programming of real-time experiments, simulations…). The first half (6 weeks) of the course consists of lectures with hands-on exercises, then, during the last 6 weeks, students have to realize a project publicly available on http://github.com

26.1.2. Learning outcomes

On successful completion of this course, students should be able to write readable, well- documented, Python programs, and use system such as git that promote reproducible science.

26.1.3. Pedagogy, class organization and homework

The first classes are lectures with hands-on exercices. The remaining classes, I and the teaching assistant are present for individual support to help the students accomplish their project. I also give weekly assignments to be done before the next lecture.

26.1.4. Assessment

The projects will be graded on a 20 points scale. The main criterion is clarity (see Projects for more details).

26.1.5. Textbook and readings

All the materials are available on the course’s web site at http://github.com/chrplr/PCBS.

26.1.6. Course policies

Laptops: Students must bring there own laptop (preferably fully charged!) with the specified software preinstalled.

Participation. You are strongly encouraged to participate in lectures and on the slack discussion forum. The more advanced students are expected to help the beginners.

26.2. Prerequisites

They should acquainted with basic programming concepts: instructions, variables, tests (if..then..else), loops (while and for).

Students are expected to know how to open a terminal and navigate in the file system and to know how to view and edit text files with a text editor such as Sublime Text.

26.3. Projects

The project should try to replicate an experiment or some simulations related to cognitive (neuro-) science.

An example of the kind of things that we expect is provided at http://chrplr.github.io/PCBS-LexicalDecision

  • All documents (scripts, stimuli, documentation, data files) related to the project should be on a github.com repository with a name starts with PCBS- followed by a label that gives an idea of what the project is about.

  • The main page of the repository (README.md) should :
    • describe the aim of the project (explain the experiment or the simulation

    • explain how to install and run the experiment on one’s computer (which command line, which options if any).

    • if the project involves analyses, the README.md should point to a documents (html, pdf, not Word!!!) containing the report.

  • It is highly recommended to use the ‘Pages’ system of github to generate a nice looking page (see https://docs.github.com/en/github/working-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site ).

  • It should be possible to clone your repository and execute your code without modifying anything. This implies that you should absolutely avoid absolute pathnames. Also your code must be portable and run on MacOS, Windows and Linux.

  • Send us a link to your github project as soon as possible so that we can check your progress.

  • The readability of the code, and of the main page are of the main criteria of evaluation.

  • Do not be overambitious: a well written project that does a simple thing but well will receive a better score than one that has an unreadble code that does complicated things.

  • You can work in binomes to read, check and criticize each other code regularily. it is very useful to have someone else check that the documentation and code that you write is readable.

  • use the slack forum https://cogmaster-pcbs.slack.com/ to ask questions

  • At the end of the README.md file, you must include a section detailling:
    • your previous coding experience

    • what you have learned since then, by following the lecture, coding the project or working by yourself

    • what you missed in this course.

I have uploaded some experimental papers on the Schoology web size (in Materials: papers-for-projects.zip) that can be used as the basis of your project.