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 --
- 2015 - Present - PhD Computer Science, Indiana
University, Bloomington IN/USA
programming langauges under the supervision
Tobin-Hochstadt. In particular, I'm currently
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.
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:
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:
- - 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
- - 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.
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
"If I have seen a little further it is by standing
on the shoulders of Giants.", Isaac Newton
"We must be very careful when we give advice to
younger people: sometimes they follow it!", Edsger
W. Dijkstra (1972 ACM Turing
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
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:
- My personal laptop, running Debian Wheezy.
- Raspberry Pi to manage my backups and help ease my daily life, such as morning alarms :)
- 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.
- A linux server on which we manage our redmine issue tracker for our question answering system project (my thesis project).
- 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]