Caner Derici - Professional

Outside the Lab

Masters Tribute Page

I've been vocationally called by different individuals and organizations as a computer scientist, Racket hacker, research assistant, teaching assistant, open source enthusiast, and even a product development specialist.

You can find different aspects of my professional life and my background here on this page. Use the navigation menu above to jump between the sections.

Here are some quick links: -- GitHub -- LinkedIn --


  • 2015 - Present - PhD Computer Science, Indiana University, Bloomington IN/USA

    Studying programming langauges under the supervision of Sam Tobin-Hochstadt. In particular, I'm currently working on Pycket, a JIT-compiler implementing Racket. More specifically, I'm trying to figure out the effects of using Racket bytecode compiler as a front-end for Pycket, i.e. investigating the individual effects of various optimizations happening at the Racket compiler to the Pycket runtime, such as inlining or lambda lifting.

  • 2014 - 2015 - PhD Computer Science, Bogaziçi University, Istanbul/Turkey

    This was basically the continuation of my masters at Bogazici. I continued to work on HazirCevap project in the field of Natural Language Processing, until I dropped out to pursue a PhD on programming languages at the Indiana University, Bloomington IN.

  • 2011 - 2014 - MSc Computer Science, Bogaziçi University, Istanbul/Turkey

    Studied theory of computation, automated theorem proving, machine learning and natural language processing.
    Worked with Tunga Güngör on closed domain question answering systems for Turkish high-school students. (government funded project)
    Thesis: Question Analysis and Information Retrieval for a Turkish Question Answering System: HazırCevap, Supervised by Tunga Güngör, Arzucan Özgür and Günizi Kartal.

  • 2005 - 2010 - BSc Computer Science, Istanbul Bilgi University, Istanbul/Turkey

    Concentrated on the theory of computation, and programming langauges, theory and implementation.
    Thesis: Proper Tail Calls From First-Class Continuations in Javascript, Supervised by Chris Stephenson and Shriram Krishnamurthi from Brown University.


Programming Languages

The study of programming languages and functional programming is always central among my research interests. I like particularly studying continuations, operational semantics, partial evaluation, etc.

However, the lack of enough people to form an even tiny community around programming languages in Turkey is hard (we tried). Therefore, only two of my studies (about PL) went beyond being simple personal reading and simple implementations:

  • - Proper Tail Calls From First-Class Continuations in Javascript - my undergrad thesis ( pdf | tex )

    This study demonstrates that a proper tail-calling behavior on Javascript is possbile while refraining from any modification on interptereter. It is based on the paper titled Continuations from Generalized Stack Inspection, Pettyjohn et al., through which a novel program transformation is presented for Javascript programs to obtain first-class continuations from exception handling mechanism. My thesis takes it one step further, showing that by using this continuation model on Javascript, achieving a tail-call optimized computation is possible, without ever touching the interpreter.

  • - E. Başar, C. Derici, Ç. Şenol, WorldWithWeb: A compiler from world applications to JavaScript (pdf), Scheme and Functional Programming 2009, Boston

I also implemented numerous interpreters for small languages to experiment upon. One of my favorite is the bracketed untyped lambda calculus interpreter. Code

Natural Language Processing

In Bogazici University (one of the top colleges in Turkey in CS) where I pursued my MSc degree, I's studying in the AI lab, doing my thesis on question answering systems in the subfield of NLP. We try to build a closed domain (geography for the first prototype) question answering system in Turkish for high-school students in Turkey. It is a government funded project where 3 faculty members (Tunga Güngör, Arzucan Özgür, Günizi Kartal) and 4 grad students (Kerem Çelik, Ekrem Kutbay, Yiğit Aydın and me) are involved.

Our QA system is named HazırCevap (an idiom in Turkish meaning quick and clever in finding answers to a question, exact translation may be PromptAnswered) and in principle based on IBM Watson, thus involving several stages for finding the answer, each composed of multiple machine learning algorithms accompanied with rule based methods to basically analyse the question, retrieve and inspect relevant documents, extract candidate answers, score and sort them and finally produce the answer.

Of course, the major problems here are 1) There is no prior work on question answering in Turkish, therefore no tagged question/answer data, no prior methodologies to compare, no nothing, and 2) Turkish is an agglutinative, free-order language having very rich morphology with a derivational structure, meaning that you cannot take a Turkish sentence apart and analyse it as easily as an English sentence.

We successfully finished the first part of the system, namely Question Analysis. Here are our publications:

  1. - C. Derici, K. Çelik, E. Kutbay, Y. Aydın, A. Özgür, G. Kartal, T. Güngör - Question Analysis for a Closed Domain Question Answering System: HazırCevap, CICLING'15, Springer Lecture Notes of Computer Science
  2. - C. Derici, K. Çelik, E. Kutbay, Y. Aydın, A. Özgür, G. Kartal, T. Güngör - Rule-Based Focus Extraction in Turkish Question Answering Systems, IEEE SIU 2014 (Short Paper)
Theory of Computation, Machine LearningL & Automated Theorem Proving

In the first year at Bogazici, I also studied;

-- machine learning, where I tried to develop (with a little success) a learning interpreter for a small programming language.

-- theory of computation to study a bit of quantum algorithms and also the probabilistic computation.

-- automated theorem proving, where I developed a resolution-refutation reasoning system (a theorem prover) with Racket, (see FARS in Projects)



In Sep 2013, I participated for a project to a group of researchers (5 faculty members, and 6 grad students) gathered around SoSLab where the collection and analysis of data collected from social networks (particularly from twitter) take place.

Direnaj is a data collection, processing and visualization project, in which huge amounts of data is gathered into a noSQL DB, and processed to mine information such as centrality, betweenness or other statistics, and be visualized.

I's one of the grad students who were working on the processing part. We take the collected data, and implement library functionality that are necessary for gathering interesting information through statistical models.

You can check out Direnaj Staging from here.

Moby Scheme

Moby was a project from the PLT Racket team, that I contributed to in the past. It is a compiler for Advanced Student Languages in PLT Racket to Javascript and HTML, targeted mainly beginners for them to be able to easily produce applications for mobile and web platforms. It turned into now a very useful and fun langauge called Whalesong.

I worked with Shriram Krishnamurthi from Brown University and Danny Yoo to implement tail calls in Moby. (see Undergrad Thesis)


My public GitHub profile is here.

There you will find several repositories, each having different kinds of studies:

  • FARS: is a resolution-refutation style automated reasoning system (a theorem prover), written in Racket. (read more)
  • graphVisual: is a useful tool for producing visual representation of graphs. It is written in Racket. Also includes a tiny api useful for graph algorithm animations. (read more)
  • fun: is my repository for funny and interesting (both to write and to watch) animations and programs. There you can find a lazy lambda calculus interpreter as well as an automated random maze generator.


After I graduate from Bilgi University, I worked there as a teaching assistant for 2 years, while I'm doing my masters in Bogazici.

The assistantship at BilgiCS is not a common one, like doing a PS when needed and only responsible for reading homeworks, projects and exams, as it is the case for most of the universities.

In BilgiCS, all courses have lecture and class hours every week. Lectures are given by the professors and classes are given by assistants. Therefore we were responsible for preparing our own classes each week for every course we had (sometimes we had more than one sections and try to keep track of each section also). Moreover, professors let assistants not only to read and evaluate homeworks and projects, but also to prepare them (I mean the questions of course). I've even had the chance to prepare midterm and final questions for programming languages course.

With this system, we (the assistants) were also trained to be a lecturer. I personally loved the experience. I had a lot of students, and they still address me with "Hocam" (meaning, teacher, lecturer, not like Hodja, the religious leader:)

The courses that I've been responsible for are below:

  • COMP 179 -  The Fundamentals of Computer Science 1[Fall 2011]
  • CMPE 169 -  Algorithms and Programming 1 [Fall 2010][Spring 2011]
  • CMPE 170 -  Algorithms and Programming 2 [Spring 2011]
  • CMN 167   -  Computational and Mathematical Numeracy for Social Scientists 1 [Fall 2010]
  • COMP 231 -  Data Structures and Algorithms 1 [Fall 2010][Fall 2011]
  • COMP 313 -  Structure and Interpretation of Computer Programs [Fall 2010][Fall 2011]
  • COMP 314 -  Principles of Programming Languages [Spring 2011]

Additionally on 2011 summer, I attended to Nesin Math Village (a real village, full of mathematicians) as a lecturer for two courses. I assisted the lecture on LC to Math graduate students and lectured on “Programming=Algebra” to high-school students. This experience was almost the final seal of my decision to be an academic


Let's remember:

"If I have seen a little further it is by standing on the shoulders of Giants.", Isaac Newton (1676)

"We must be very careful when we give advice to younger people: sometimes they follow it!", Edsger W. Dijkstra (1972 ACM Turing Lecture)

Here's some talks that I did in various conferences and seminars. They're not much right now, but I believe in time I'll have chances for many more talks.

  • "Natural Language Processing Techniques on Tweet Data", with Prof. Suzan Üsküdarlı, from SosLab & Complex System Laboratory, Inet-tr Conference, Internet Technologies in Turkey, December 2013
  • "Wir müssen wissen! Wir werden wissen!" [Slides] , Istanbul Bilgi University, CS weekly seminars, October 2010
  • "Bu Yoğurdu Saklasak Mı?" (It's in Turkish) [Slides], Istanbul Bilgi University, CS weekly seminars, December 2009

Tech Gear

I am an open source enthusiast. I'm not officially a system admin, however, for the last 9-10 years, I personally use and manage linux OS machines. I'm particularly fond of Debian.

Right now, I'm managing 5 linux machines:

  1. My personal laptop, running Debian Wheezy.
  2. Raspberry Pi to manage my backups and help ease my daily life, such as morning alarms :)
  3. My linode server. It speaks with the PI on my home and keeps track of my personal code base, as well as coordinates the daily backups that PI will perform. Also serving this web site.
  4. A linux server on which we manage our redmine issue tracker for our question answering system project (my thesis project).
  5. An HP Z800 workstation with 12 cores and RAID disks, to be able to do fast indexing and run statistical algorithms on large data easily.


Here's my CV, and

the tex source if you need any help building a cv with . [Original Source]