Software Carpentry Workshop at Federal University of Ceará

On June 19-20 I joined Daniela for the first Software Carpentry in the northeast of Brazil, i.e. far away from São Paulo and Rio de Janeiro.


I’m grateful to Fátima Nelsizeuma Sombra de Medeiros that hosted the workshop.


I’m grateful to Flávio Henrique Duarte de Araújo, Romuere Silva and others from Labvis that helped organizing the workshop.


I’m grateful to Alexandre that helped the learners a lot during the workshop.

At this workshop we had 23 learners, mostly from Labvis (the laboratory leaded by Fátima) but also from others departments of Federal University of Ceará and Fiocruz, in different carriers stages (undergraduates, PHD students and senior researchers).

Only a few learners don’t show up at the second day and/or need to go early.

Software Installation

I didn’t get any email about troubles or difficulties to install the softwares. At the last session of the workshop we used knitr and instructions of how to install it were provided during the first day.

One learner had trouble with a missing library but the problem was solved by the students after searching for it on the web.

UNIX Shell

This session kickoff the workshop following Software Carpentry’s UNIX Shell standard lesson and goes very well. I used for the first time a custom layout for the shell and you can read more about it at my previous post.

R - First Day

In the afternoon of the first day, Daniela taught Software Carpentry’s R standard lesson. This was a great lesson.


The second day started with Daniela teaching Software Carpentry’s Git standard lesson and went well. The only thing that we did different was using

$ git commit -m "Commit Message" mars.txt

instead of

$ git add mars.txt
$ git commit -m "Commit Message"

for create the commits/revisions.

I wouldn’t do that a second time because after

$ git log --oneline --all --decorate --graph
* 7b6de7b (B) Others changes
| * f07491a (A) Some changes
* c867bb3 (HEAD, master) Create mars
$ git merge A
Updating c867bb3..f07491a
 mars.txt | 1 +
 1 file changed, 1 insertion(+)
$ git merge B
Auto-merging mars.txt
CONFLICT (content): Merge conflict in mars.txt
Automatic merge failed; fix conflicts and then commit the result.
$ nano mars.txt

we got

$ git commit -m 'Conflict solved' mars.txt
fatal: cannot do a partial commit during a merge.

and it isn’t related with the missing of git add

$ git add mars.txt
$ git commit -m 'Conflict solved' mars.txt
fatal: cannot do a partial commit during a merge.

We need to

$ git add mars.txt
$ git commit -m 'Conflict solved'
[master 76d65f6] Conflict solved
$ git log --oneline --all --decorate --graph
*   76d65f6 (HEAD, master) Conflict solved
| * 7b6de7b (B) Others changes
* | f07491a (A) Some changes
* c867bb3 Create mars


One of the reasons that we do live coding is because learners got experience solving errors when we did one by mistake.


After lunch, Daniela continue the Git lesson teaching the remote part of it (also know as GitHub part).

During this session we had many questions because some of the learners already used GitHub before. Answering the questions we went a little off the script and mention some intermediate features.


As we mention during the lesson, GitHub only have free repositories for public projects. If you want free repositories for private projects you should check GitLab and Bitbucket.

If you are a academic, you can request free private repositories to GitHub following this instructions

LaTeX and Overleaf

After the workshop, I was talking with Fatima and she mentioned that she and her students were using Overleaf. Overleaf supports Git so you can easily download your project, work offline and send your changes back to Overleaf just like we did to GitHub. I wrote a blog post, that could be a little out of date, reviewing this feature in case you want to read a little about it before try it.


To close the workshop, I lead a session about RMarkdown and knitr on RStudio.


You can use RMarkdown without RStudio if you want.

We chose to run this session because (1) normally learners are very tired after the Git session, (2) they can review what Daniela presented in the previous day, (3) is easier to use RMarkdown with Git than DOCX or ODT, (4) is easy to convert RMarkdown to PDF and DOCX, and many others reasons.

To attend learners feedback (more about it soon), we drive this session by challenges. We asked learners to download this files (in Portuguese) and go into

  1. explain some challenges,
  2. give time to learners try solving the challenges,
  3. present the solution and make comments,
  4. back to step 1.


The dataset used at this session was gapminder for learners have some experience working with CSV with header.

Solution of RMarkdown Session

As promissed, here you will find the solution. Since someone asked about tables, I added it at the solution.


We had lots of positive feedbacks and attendees mention that they like to run another one or something similar, there is no problem with that, in the future.

The complains were:

  • getting disconnect from wi-fi very often (this one was fixed at the second day),
  • goes more slowly,
  • more examples of applications,
  • more examples before challenges,
  • more challenges,
  • the UNIX Shell was short and could be one full day (this one happens three times).


This was a amazing workshop. I and Daniela noticed that some of the attendees could teach some of the lessons by their own without problems and in a few months could teach the others if start using it in a dayly base. For those that want to join Software Carpentry team of instructors, just send a email to me or Daniela and we will reply with instructions.

About Software Carpentry Instructors

They are all volunteers that know at least one of the tools of Software Carpentry’s currículum, i.e. Unix Shell, Git, SQL, Python, R, and MATLAB. For example, I don’t teach SQL. =)