Second year of professoring

6 minute read

Following my blog post about my first year of professoring, in this blog we update the status for the current year. Let me revisit this wonderful year.


I taught four courses this year, all of them to undergrad. This is the minimum number of courses one professor can teach in a year in my university (the only exception are professors that accumulate administrative roles, which is not my case). I taught Databases 101, Advanced databases, Advanced Data structure, and Object Oriented Programming.

The good thing about these courses is that the first three of them I have already taught last year, so I employed less time to create the course materials (I only had to update them). The exception was the Object Oriented Programming, which I have to start from scratch. I was heavily inspired by the methodology used in this on line course, made by Eduardo Guerra, who teaches unit testing in the very second day, and use it throughout the course. While I found it very interesting, looking back to the course, I believe students did not find it very pleasant, and very few of them really mastered unit testing. Part of it is, of course, my fault. I am still learning how to be a professor; this is the first time I taught this course; and unit testing is, I believe, not something very easy to teach. I noted that, in particular, during some of the class assignments, which I already provided the test cases, the interfaces, and asked students to create the concrete classes and fill up the method bodies. Later on I unfortunately perceived that very few students really made it. Some students were have basic issues with the Java programming language (even though they learnt C before Java), and the use of more advanced features of an IDE (such as debugging) did not help much them.

The other classes I think went more smoothly. However, the Advanced databases course is heavily based on database theories (e.g., concurrency, atomicity, storage, etc), and students have a hard time trying to connect the dots between the theory and practice. In one particular assignment, I asked students to build a very large dataset using (1) a binary file and (2) a real database, and try to do some queries. The result of this assignment was quite interesting, since students perceived that a full-fledged database often perform worse than simple queries made over a binary file. During the Databases 101, I asked students to play with the MSR dataset. I was surprised by some of the works that students did; two of them in particular could be very competitive research papers, if polished and enhanced here and there. The lesson I learnt from this course is that I can take advantage undergrad students to do some good research work. However, it also requires much more time from you (e.g., Besides advising, I spent many hours dealing with the MSR dataset. I have to build the dataset twice, because the machine that I was using to build the dataset was not robust enough. I also have to add more physical memory to it).


This year I started to advise one more master student (two in total), and I advised seven undergrad students over their capstone projects. Three of the undergrad graduated (two just graduated last week, and the other one graduated last semester). I am particularly proud of the work that one undergrad did. This particular undergrad was having a hard time to graduate (I think he was in school for 7–8 years, maybe more). With some help from my collaborators, we were able to send his work to ICSE SEET, which was gladly accepted. (In the last year blog post I mentioned that I was impressed by this student and we potentially would submit his work to a good software engineering conference.. things worked well) In this year, my first PhD (co-supervised) student graduated, and I also co-supervised a master student. Overall, I am really happy for the work that they did.

Now the bad thing about advising: somehow, I ended up with students working in many different research topics. Nearly, no research topic is close to the other, so students could hardly collaborate. Another issue is that this approach requires me much more cognitive effort. For instance, during a weekly meeting, I have to load from my deep thoughts where we were in the last week, just to get back on track (it is not “plug-and-play”). Besides that, I feel I’m not very familiar with the related literature of all these kind of works, so then I cannot suggest good papers to students and, even worse, the students may be working on something that is not entirely novel. This is not to mention the need of 1–1 meeting (which could easily drain all my agenda). As I perceive now, students should collaborate with each other, and individual research topics should be parts of a more robust research problem. I may need some time to fix it.

Research and Service

In 2018 I published 16 research papers (4 journals [SPE, EMSE, IST, and JBCS], 10 conferences [ICSE: 2x, MSR: 2x, SBES: 2x, EASE, ESEM, OSS, SANER], 2 workshops [CHASE, VEM]). This year was by far the most productive one (in terms of papers acceptance). Although I did not measure work hours, I suspect that this year I spent less time on research than any other year (I have classes to teach, meetings, a lot of service, other university commitments, etc). I also had my second kid, which does not permit me to work from home anymore. This number of paper is, actually, the collective effort of many collaborators. I myself was the first author of only five papers. One thing that I’m particularly happy about these papers, is that only two of them (the CHASE paper, and the IST paper) are short ones. Last year I complained that most of my contributions were short papers, and that I planned to avoid short papers in 2018. It seemed to work well. This year I also started to curate my CV of failures (I have 19 submissions rejected in this year).

Another interesting thing is that this year I did not travel to any international conference. I have been traveling to conferences, meetings, whatever, for so many years (I had that most frequent flyer badge in two different air companies). It requires a lot from you. A lot of money (perhaps public money, but it is not always the case), but, more importantly, it requires a lot of time. Being away from home while traveling so much is not the best way to enjoy two kids. For 2019, I also plan to fly less and less. This in turn requires me not to submit to/attend conferences. One thing that I thought is that by not attending conferences, I may ended up with less collaborators. Fortunately, this did not happen to me (yet?). What I can anticipate is that you might see myself less and less in international conferences in 2019.

Finally, in this work I reviewed a ton. I was invited to 24 PCs for 2018 conferences, and I already participated in four PCs for 2019 conferences. I also reviewed seven papers for journals [EMSE: 4, TSE: 1, SCP: 1, JBCS: 1]. I basically accepted any invitation I received. Overall, I reviewed 53 papers, and wrote 30K words in reviews. I am happy for all this work done, but … it was a lot. Let’s say I need 30 minutes to write 500 words plus one hour to read the paper (a very conservative measure). It would take me 68 hours (more than one week and a half) devoted only to review papers. I cannot commit myself to all this work again in 2019. I hope you could understand this when I turn down invitations.