Software Engineering is a one-year programme at the University of Amsterdam, accepting Bachelor-level students with interest in computer science yet more amused by its technical side, the engineering aspects, as well as by the human factors playing a role in the software development process. It is promised and assumed that the graduates of the programme are eventually suitable to work as lead developers, senior software engineers, technical advisors and industrial researchers.
Timeline
- I unofficially (as a CWI employee) assisted in the lab studies of courses like Software Construction and Software Evolution in 2011, 2012 and 2013.
- I unofficially (still being employed by the CWI) joined the programme in September 2013 for the Software Testing course where I actively assisted Jan van Eijck.
- From September 2013 till March 2014, I was responsible for the course Preparation Master Project (a.k.a. Academic Skills, a.k.a. Paper Sessions) which consisted of numerous small group sessions teaching students to seek, filter, consume and produce academic literature. Ran about half of the sessions myself, asked colleagues to cover the rest.
- In November 2013 I started working at the UvA officially as a lecturer of the education team.
- In January 2014, I ran the first Bachelor course together with Hans Dekkers and Alan Berg, participating in the course design, giving lectures, assisting lab work and auditing some of the teams.
- From March 2014 till January 2016, I was supervising final Master student projects, in total 22 of them finished successfully within that period.
- In March–November 2014, I have co-supervised one Bachelor student project together with Daan van den Berg.
- In April–June 2014 I have successfully completed the BKO (“Basic Educational Qualifications”) training programme given at the UvA by AcademicFactory. Got the actual certificate in October 2014.
- Some time in begin 2014 I have also started testing student candidates for their premaster courses.
- Since May 2014 I was also running some of the intake procedures, involving interviews with students and admitting them (often conditionally, by assigning them premaster courses).
- In November 2014 and November 2015 I have organised the Thesis Fair, events bridging industrial companies with their possible MSc interns.
- Starting from February 2016, I am only involved in the programme as a remote supervisor and sympathiser.
- In August 2016, I was asked to run a summer school in Compiler Construction for premaster students.
- In November 2016, November 2017 and November 2018, I represented Raincode Labs at the Thesis Fair. I brought dragons.
- On 14 December 2016, 13 December 2017, 12 December 2018, 9 December 2019, 30 November 2020, 29 November 2021 and 28 November 2022 I have given guest lectures for Software Evolution, a course I used to give.
- In February and March 2018, I was asked to give the last edition of the Software Construction course as an external lecturer. Starting from 2019, the course has been replaced by a course on DevOps. The original designer of the Software Construction course moved to Groningen and reformed it into a course on Software Language Engineering.
- I have attended yearly graduation ceremonies on 8 October 2014, 21 October 2015, 18 October 2016, 17 October 2017, 27 November 2018, 8 October 2019 and 20 January 2021, congratulating successfully graduated students with personal speeches because all of them were awesome.
- Since 1 March 2020 I am a member of the examination committee of MSc SE.
Publications based on student work (by acceptance date)
- Ammar Hamid, Detecting Refactorable Clones Using PDG and Program Slicing, SATToSE, 2014. Preproceedings submission.
- Ammar Hamid, Vadim Zaytsev, Detecting Refactorable Clones by Slicing Program Dependence Graphs, SATToSE, 2014. CEUR, pp. 37–48.
- Carlos U. Cirello F., Pretty Printers: Anatomy and Measured Effects on Productivity of Teams of Developers, SATToSE, 2015, pp. 63–66. Preproceedings submission.
- Boryana Goncharenko, Detecting Violations of CSS Code Conventions, SATToSE, 2015, pp. 89–91. Preproceedings submission.
- Jetse Koopmans, Daan van den Berg, Vadim Zaytsev, Similarity, Data Compression and a Dead Composer, SRC, 2015.
- Jetse Koopmans, Daan van den Berg, Vadim Zaytsev, Similarity, Data Compression and a Dead Composer, SURE! vol. 1(1), 2015. TUDelft.
- Juriaan Kennedy van Dam, Vadim Zaytsev, Software Language Identification with Natural Language Classifiers, SANER ERA, 2016. IEEE, pp. 624–628.
- Nico de Groot, Analysing CSS using the M3 Model, SATToSE, 2016. Preproceedings submission.
- Gorjan Jovanovski, Vadim Zaytsev, Critical CSS Rules — Decreasing Time to First Render by Inlining CSS Rules for Over-the-Fold Elements, SATToSE, 2016. Preproceedings submission.
- Leonard Punt, Sjoerd Visscher, Vadim Zaytsev, The A?B*A Pattern: Undoing Style in CSS and Refactoring Opportunities it Presents, ICSME, 2016. IEEE, pp. 67–77.
- Leonard Punt, Sjoerd Visscher, Vadim Zaytsev, A Tool for Detecting and Refactoring the A?B*A Pattern in CSS, ICSME, 2016. IEEE, p. 613.
- Leonard Punt, Sjoerd Visscher, Vadim Zaytsev, Experimental Data for the A?B*A Pattern in CSS: Inputs and Outputs, ICSME, 2016. IEEE, p. 616. Best Artefact Award.
- Boryana Goncharenko, Vadim Zaytsev, Language Design and Implementation for the Domain of Coding Conventions, SLE, 2016. ACM, pp. 90–104.
- Nico de Groot, Vadim Zaytsev, CSS Corpus for Reproducible Analysis, SATToSE, 2017. CEUR, pp. 47–56.
- Nicole Vavrová, Vadim Zaytsev, Does Python Smell Like Java?, ‹Programming› vol. 1(2), 2017. Pp. 11-1–11-29.
- Mats Stijlaart, Vadim Zaytsev, Towards a Taxonomy of Grammar Smells, SLE, 2016. ACM, pp. 43–54.
- Aynel Gül, Vadim Zaytsev, Mutative Fuzzing for an Assembler Compiler, BENEVOL, 2019. CEUR, pp. 18–24.
Publications / presentations on educational topics (by presentation date)
- Vadim Zaytsev, Flipped Education, EFD, 2014. Invited presentation.
- Vadim Zaytsev, The Day of the Master, Joy of Coding, 2014. Coding dojo.
- Jan van Eijck, Vadim Zaytsev, Flipped Graduate Classroom in a Haskell-based Software Testing Course, TFPIE, 2014. Presentation abstract.
- Anya Helene Bagge, Vadim Zaytsev, Languages, Models and Megamodels, SATToSE, 2014.
- Dick van Albada, Roy Bakker, Inge Bethke, Robert Belleman, Daan van den Berg, Magiel Bruntink, Hans L. Dekkers, Roeland Douma, Toto van Inge, José Lagerberg, Andy Pimentel, Simon Polstra, Raphael Poss, Ana-Lucia Varbanescu, Arnoud Visser, Vadim Zaytsev, Whitepaper: Project-based Curricula, UvA FNWI IvI External Report, 2014.
- Anya Helene Bagge, Ralf Lämmel, Vadim Zaytsev, Reflections on Courses for Software Language Engineering, EduSymp, 2014.
- Vadim Zaytsev, Model-based Student Admission, EduSymp, 2014. Position paper.
- Çiğdem Aytekin, Magiel Bruntink, Ammar Hamid, Tijs van der Storm, Vadim Zaytsev, Software Engineering Master Students Replicate (Your) Research, SEN Symposium, 2014. Poster.
- Dave Stikkolorum, Birgit Demuth, Vadim Zaytsev, Frédéric Boulanger, Jeff Gray, The MOOC Hype: Can We Ignore It? Reflections on the Current Use of Massive Open Online Courses in Software Modeling Education. EduSymp 2014. Panel paper.
- Vadim Zaytsev, Flipped Top-Down is Systematic Bottom-Up, EduSymp, 2015.
- Vadim Zaytsev, The DSGA Model of DSL Design: Domain, Schema, Grammar, Action, DSLDI, 2015.
Supervised students (by defence date)
- Ovidiu Roșu. Grammatical Inference from Source Code Written in an Unknown Programming Language. April–June 2014. (C++ code) (Rascal code)
- Christian Patrik König. Static Code Analysis for PHP. March–August 2014. Hosted by Guidion.
- Eenass Butrus. Satisfying Coverage Criteria by Grammar Mutations and Purdom’s Sentence Generator. April–August 2014. (Java code)
- Varvara Tzika. Ranking Classifieds at Marktplaats.nl: Query Modeling, Retrieval Methods, Data Fusion and Result Diversification. June–August 2014. Hosted by Marktplaats. Co-supervised with Manos Tsagkias and Ton Wessling.
- Xander Horjus. UvApp: Challenges in Mobile Software Engineering Examined. April–August 2014. Hosted by UvA ICTS. Co-supervised with Tom Kuipers and Alan Berg.
- Ammar Hamid. Detecting Refactorable Clones Using PDG and Program Slicing. April–August 2014. (Scheme&Ruby code)
- Lulu Zhang. Implementing a PDG Library in Rascal. April–September 2014. (Rascal code) (Java code)
- George Pachitariu. Data Replication Algorithms in Distributed Databases. April–October 2014. (Java code)
- Sven Rohde. Test-suite for Automated Invariant-based Testing of AJAX Web-applications. April 2014–March 2015. Hosted by Guidion. (Java code)
- Bas Meesters. The Visualisation of Symbolic Transition Systems. April–July 2015. Hosted by Axini. Co-supervised with René de Vries.
- Kevin Adegeest. Automated Detection of Unused CSS Style Rules by Crawling Web Applications. April–August 2015.
- René Bulsing. Detecting Refactored Clones with Rascal. April–August 2015. (Rascal code)
- Nian Liu. User-Centered 3D Manipulation Model for Scientific Visualization. April–August 2015. Hosted by CWI. Co-supervised with Robert van Liere. (Java code)
- Leonard Punt. The A-B*-A Pattern of Undoing Style in Cascading Style Sheets. April–August 2015. Hosted by Q42. Co-supervised with Sjoerd Visscher. (front page) (JavaScript code) (data set) (repo)
- Daniel Conde Moya. NATURALIZE: A replication study. April–August 2015. Co-supervised with Alexander Serebrenik.
- Boryana Goncharenko. Detecting Violations of CSS Code Conventions. April–August 2015. (Python code) (Sublime plugin) (PyPi)
- Axel Polet. Re-engineering Cascading Style Sheets by Preprocessing and Refactoring. April–August 2015. (Java code)
- Sebastian Hantich. Indoor Positioning using Location Fingerprinting. April–August 2015. Hosted by bunq. Co-supervised with Esan Wit. (Data set)
- Tuba Kaya Chomette. Automatically Detecting ORM Performance Anti-Patterns on C♯ Applications. March–September 2015. Co-supervised with Raphael Poss and Giuseppe Procaccianti. (C♯ code)
- Nikola Vavrová. Python Design Defect Detection. April–December 2015. (Java code) (ANTLR4 grammar)
- Juriaan Kennedy van Dam. Identifying Source Code Programming Languages through Natural Language Processing. May 2015–January 2016.
- Timon Dominique Langlotz. Event Detection Using Machine Learning Classifiers in the Context of Real-World Objects. April 2015–January 2016. Hosted by Peerby. Co-supervised with Eelke Boezeman.
- Mark Suurland. Replication: Necessary and Neglected? An Empirical Study of Internal Documentation in Agile Software Development Teams. April 2015–March 2016. Hosted by Rabobank. Co-supervised with Wil Leeuwis and Onno Verdonk.
- Nico de Groot. Analysing and Manipulating CSS using the M³ Model. April–July 2016. (Rascal code) (Java code) (data)
- Gorjan Jovanovski. Critical CSS Rules: Decreasing Time to First Render by Inlining CSS Rules for Over-the-Fold Elements. April–July 2016. Hosted by The Next Web. (node.js code) (data)
- Merijn Wijngaard. Dependence Analysis in PHP. April–August 2016. Hosted by Moxio. Co-supervised with Mark Hills and A. Boks.
- Sven-Erik Haitjema. Wireless Sensor Networks. January 2014–August 2016. Hosted by Digital Life Centre. Co-supervised with Ben Kröse.
- Ton Heijligers. Statistical Lexical Analysis. January 2016–April 2017.
- Mats Stijlaart. Towards a Catalogue of Grammar Smells. January–August 2017. (Rascal code)
- Jelle van Noord. Extended Taxonomy of Grammar Smells. January–August 2019. Hosted by Raincode Labs. Co-supervised with Clemens Grelck.
- Tom Freijsen. Language-independent Detection of Complex Source Code Mutations. January–August 2019. Hosted by Raincode Labs. Co-supervised with Clemens Grelck and Johan Fabry.
- Ewoud Bouman. Testing COBOL Compilers using Metamorphic Relations. January–August 2019. Hosted by Raincode Labs. Co-supervised with Clemens Grelck and Johan Fabry.
- Aynel Gül. Testing HLASM Compilers with a Mutative Fuzzing Approach. January–October 2019. Hosted by Raincode Labs. Co-supervised with Clemens Grelck.
- Felix Barten. Python Code Smell Analysis. Finding Hidden Code Smells. January 2018 – May 2020. (Java code) (Rascal code)
- Alberto Martínez de Murga Ramirez. Dead Code Detectionon Strict ECMAScript 6 Projects. January 2017 – August 2021. (TS code)
- Eric van der Woude. Retargeting a Compiler for a Different Platform. January–November 2021. Co-supervised with Johan Fabry.
Courses
- Software Specification and Testing
- September – October 2013;
coordinator: Jan van Eijck; my role: guest lecture, weekly workshop, weekly two day lab, grading, code review, assignments co-design, examination; others involved: Bert Lisser, Eiseart Dunne, Machiel van der Bijl (paper)
- September – October 2014;
coordinator: Jan van Eijck; my role: course co-design, weekly workshop, weekly two day lab, grading, code review, assignments co-design, examination; others involved: Bert Lisser, Eiseart Dunne, Machiel van der Bijl
- September – October 2015;
coordinator: Jan van Eijck; my role: weekly workshop, weekly two day lab, grading, code review, examination; others involved: Bert Lisser, Malvin Gattinger
- Software Evolution
- Software Construction
- February – March 2014; coordinator: Tijs van der Storm; my role: weekly two day lab supervision, grading; no other people involved
- February – March 2015; coordinator: Tijs van der Storm; my role: weekly two day lab supervision, guest lecturing, grading; no other people involved
- February – March 2018; my role: coordinator; people involved (on Thursdays): Nick Lodewijks
- Preparation Master Project (poster)
- Project Software Engineering (BSc level)
- January 2014;
coordinator: Hans Dekkers; my role: lectures, course co-design, audits; people involved: Alan Berg and external auditors
- June 2015;
my role: coordinator; people involved: Machiel van der Bijl and external auditors (paper)
- Premaster (“schakelvakken”) (paper)
Current students (by start date; dim if not the main supervisor)
- Carlos Cirello Filho (unparsing and versioning)
- Yoan-Alexander Grigorov (domain-driven design)