What kind of student profile are you looking for?

We are looking for (latin american) students who are programming almost every day, can find a solution to the coding problems they bump into, but have the clear feeling that there must be a better, more efficient, way of doing things. You don't dare to call yourself a programmer because you taught yourself how to program in a learning-by-doing fashion? You know that if you could have one week full-time dedicated to learning best practices you could significantly improve the quality and the efficiency of your coding efforts? You would like to become more confident in programming so that you can help your fellow students/colleagues to improve their programming? You only got a simple introduction to C/Java/Python/Fortran in your curricular studies that did not include any practical experience in developing software? Someone told you that women are not good at programming and you feel that this does not make any sense? You are the perfect candidate for this school. This, plus re-reading the school description should give you a clear idea of what kind of audience we designed the school for.

I want to learn Python. Is this the right school for me?

No, and the reason is very simple: there are tons of nice tutorials online about Python. Just pick one and work through it for a couple of weeks and start writing small scripts in Python. Our school is not going to help you with this. One week is definitely not enough to learn a programming language, even a simple one like Python. That is why we require prior knowledge of Python. If you don't know Python but are proficient in another programming language and you intend to switch to Python and your profile matches the one described in the first FAQ, you are welcome to apply. If accepted, you'll have to make the effort of learning Python before coming to the school. Participating in the school without prior Python knowledge is bound to be a big disappointment.

I already know most of the stuff in the program, but I really could use some talk with experts in the field. Is this the right school for me?

Not really. The school has indeed the word advanced in the title but this does not mean that it is a workshop for expert programmers. The school is devised to help scientists whose programming skills are basic to become competent with best software development practices. If you are already familiar with most of the program you are already advanced. This means that you are really overqualified to participate: you would be bored.

Is it OK to use a chatbot, like for example ChatGPT, to “improve” my application?

This is such a serious topic that it deserves its own page.

Is Mexico City safe?

According to the Global Peace Index, Mexico is located in 137 place, which is not ideal. Mexico City is a tourist destination that receives more than 16 million tourists per year. Even when the crime rate isn’t great, most of it is localized in non-tourist areas. However, we recommend being cautious as pickpocketing and petty theft is common.

I do not speak English, can I still apply?

No. There are many reasons why we choose English as the official language of the school.

I am working for a private company. Can I apply?

The school is not meant to be a free training alternative to the many excellent commercial offers with which we can not and do not want to compete. But if you are doing some kind of research in the company and you are nurturing your programming skills on a personal level you are welcome to apply: we already had several students from companies.

I am not studying anything neuroscience related. Can I apply?

Sure. We strive to have a multidisciplinary pool of students, so we encourage applications from all areas of science, even the most exotic ;-).

Why do you use pair-programming?

Among the many things we teach during the school, pair-programming is definitely one of those that impact the most the quality and the efficiency of the students' programming skills. If your peer is less skilled than you in a certain subject, you will learn a lot by helping your peer to understand. If your peer is more skilled than you, you will learn a lot by listening to and watching your peer. Pairs are switched on a regular basis, which makes for a lot of nice social interactions and makes sure that you don't get stuck with someone you can't work with.

Why aren't you teaching Object Oriented Programming?

Because if you don't know it already, a day-long lecture is not enough to understand it and use it efficiently. The very same lecture would be, on the other hand, terribly boring for those who know OOP already. There are many programming paradigms that would be worth teaching: Functional Programming, Procedural or Imperative Programming, Literate Programming, and so forth. Unfortunately we only have one week time and it is better not to teach something than to teach it sloppily ;-). On top of all of that, some people think that Object Oriented Programming is harmful ;-)

Why can't I use my own laptop for the school?

There are several reasons. First, by using the laptops provided by us we can make sure that all students work with a consistent environment and we don't waste time debugging local installation or configuration problems. If you want to get help in configuring such an environment on your own system there will be plenty of time and tutors willing to help, but outside of lectures. Second, pair-programming with private laptops becomes very difficult. People have a tendency to be very shy typing on someone else's laptop, they may not be familiar with the keyboard layout and the keyboard shortcuts, they may be used to a different operating system, they may fear to “break” it. Third, with your own laptop the instinct to have a look at your favorite social network or news site is much more difficult to resist compared to the situation when you are sharing a foreign laptop with someone else: the cognitive load at the school is already quite high, and you can't afford wasting those few spare brain cycles ;-)

Why do you use a video game as a programming project and not some scientific projects or students' personal projects?

We want students to make a real collaborative software development experience. This implies that they have to work in groups. Given the very diverse background of our students, choosing a scientific project means either having a trivial project, or having a project where most of the people don't know some very basic concepts that are needed to contribute anything relevant. Using a “neutral” project, as it is the case with our video game, means that no prior domain specific knowledge is required and all students can collaborate on equal terms. We want student to focus on the programming issues, after all, and not to devise some clever solution to a made-up scientific problem. Last but not least, the game programming project has been a lot of fun for our previous students and faculty members. :-)

Are there travel grants available?

Unfortunately not. We try to organize inexpensive accommodation for the students and we try to always have inexpensive food options, but we have no resources to support students financially :-(