Created by Magical Gnomes!

Teaching

...begin by assuming a perfect sphere...

The primary reason that I enrolled in the graduate program here at Purdue University is my love for teaching. I owe a great debt of gratitude to Dr. Mark Johnson for hiring me as an undergraduate TA for ECE 364 many years ago.

CS 240 - Programming in C (3 credit hours)

The UNIX environment, C development cycle, data representation, operators, program structure, recursion, macros, C preprocessor, pointers and addresses, dynamic memory allocation, structures, unions, typedef, bit-fields, pointer/structure applications, UNIX file abstraction, file access, low-level I/O, concurrency.

Spring 2022: Instructor (473 students)
Fall 2021: Instructor (261 students)
Fall 2020: Instructor (236 students)
Spring 2020: Instructor (421 students)
Spring 2019: Instructor (327 students)
Fall 2018: Instructor (231 students)

CS 180 - Problem Solving and Object-Oriented Programming (4 credit hours)

Problem solving and algorithms, implementation of algorithms in a high level programming language, conditionals, the iterative approach and debugging, collections of data, searching and sorting, solving problems by decomposition, the object-oriented approach, subclasses of existing classes, handling exceptions that occur when the program is running, graphical user interfaces (GUIs), data stored in files, abstract data types, a glimpse at topics from other CS courses.

Fall 2022: Instructor (446 students)
Fall 2021: Instructor (290 students)
Fall 2020: Instructor (313 students)
Fall 2018: Instructor (214 students)
Fall 2017: Instructor (185 students)

CS 307 - Software Engineering I (3 credit hours)

An introduction to the methods and tools of software engineering; software life cycle; specification and design of software, software testing, cost and effort estimation; laboratory exercises with design, testing, and other tools.

Fall 2022: Instructor (187 students)
Spring 2021: Instructor (130 students)
Spring 2020: Instructor (125 students)
Fall 2018: Instructor (87 students)
Spring 2018: Instructor (149 students)
Fall 2017: Instructor (179 students)
Spring 2017: Instructor (167 students)

CS 50011 - Introduction to Systems for Information Security II (3 credit hours)

The course covers computer systems principles relevant to information security and it serves as a prerequisite for the later courses in the MS in IS program. The material includes features in the C/C++ programming languages for understanding security-critical software vulnerabilities, basic knowledge in computer architecture and assembly languages, knowledge of the compiling process, operating systems, networking, databases, and web applications relevant to information security.

Summer 2022: Instructor (10 students) - Syllabus
Summer 2021: Instructor (2 students)
Summer 2020: Instructor (2 students)
Summer 2019: Instructor (5 students)
Summer 2017: Instructor (2 students)

CS 50010 - Foundational Principles of Information Security (3 credit hours)

This course covers foundational principles relevant to information security including data structures, algorithm design, computational complexity, probability theory, number theory, and basics of cryptography. Programming experience and computer science knowledge equivalent to that of a minor in CS. Incoming students are expected to have programming skills in at least one procedural programming languages e.g., C, C++, Java, or Python.

Summer 2022: Instructor (9 students) - Syllabus
Summer 2021: Instructor (2 students)

CS 252 - Systems Programming (4 credit hours)

Low-level programming; review of addresses, pointers, memory layout, and data representation; text, data, and bss segments; debugging and hex dumps; concurrent execution with threads and processes; address spaces; file names; descriptors and file pointers; inheritance; system calls and library functions; standard I/O and string libraries; simplified socket programming; building tools to help programmers; make and make files; shell scripts and quoting; unix tools including sed, echo, test, and find; scripting languages such as awk; version control; object and executable files (.o and a.out); symbol tables; pointers to functions; hierarchical directories; and DNS hierarchy; programming embedded systems.

Fall 2019: Instructor (119 students) - Syllabus
Summer 2018: Instructor (34 students)
Spring 2018: Instructor (114 students)

CS 250 - Computer Architecture (4 credit hours)

Covers the function of basic hardware, including fundamentals of digital logic, processors, memory, and I/O.

Summer 2017: Instructor (43 students) - Syllabus

ECE 469 - Operating Systems Engineering (4 credit hours)

The design and construction of operating systems for both individual computers and distributed (networked) systems. Basic concepts and methods for managing processor, main memory, block-structured storage, and network resources are covered. Detailed examples are taken from a number of operating systems, emphasizing the techniques used in networked versions of UNIX. These techniques are applied to design improvements of portions of a simplified, networked, UNIX-based operating system; the improvements are implemented and their performance is evaluated in laboratory experiments.

Spring 2008: Instructor (35 students) - Syllabus

ECE 264 - Advanced C Programming (2 credit hours)

Continuation of a first programming course. Topics include files, structures, pointers, and the proper use of dynamic data structures. A basic knowledge of the UNIX operating system and an introductory C programming course is expected; C programming knowledge should include basic syntax, control structures, and file I/O, as well as experience in declaring and using functions.

Fall 2005: Instructor (92 students) * - Syllabus

ECE 364 - Software Engineering Tools Laboratory (1 credit hour)

To acquaint the students with a variety of current software engineering tools, scripting languages, and application programming languages. Students are expected to use their previous programming experience to design and test software programs using the techniques learned in this course.

Fall 2007: Instructor (38 students) - Syllabus
Spring 2007: Instructor (54 students)
Fall 2006: Instructor (30 students)
Spring 2006: Instructor (55 students) *

Spring 2005: Graduate Teaching Assistant (TA)
Fall 2004: Graduate Teaching Assistant (TA)

Spring 2004: Undergraduate Teaching Assistant (UTA)
Fall 2003: Undergraduate Teaching Assistant (UTA)
Spring 2003: Undergraduate Teaching Assistant (UTA)

Fall 2002: Undergraduate Laboratory Assistant (ULA)

* During the 2005-2006 academic year I was the recipient of the Charles C. Chappelle Fellowship

Student Emails

One of the challenges of teaching is knowing whether or not you've done a good job and how you have impacted your students' lives. While we have surveys and other mechanisms that assign a number for some definition of success, I find that it is far more rewarding and validating when I receive personal feedback. I've included a collection of emails from students over the years below.

Good Afternoon Professor
 
My name is [redacted]. I am a freshman majoring in Computer Science. I was part
of CS 240 this Spring Semester. I wanted to take a moment to thank you for
teaching me this semester. It truly has been a privilege to be taught by you.
 
First, I want to thank you for always keeping the classes exciting and fun. For
so many of my classes whenever I didn’t feel like studying, you were able to
motivate me every time. Moreover, I really want to commend your patience with
all of us, you were so understanding all the time.
 
Finally, I want to thank you for your teaching style. You went over every topic
in such detail in your lectures and the engaging methods of your teaching with
the best mixture of humour made it even more exciting for us. I also appreciate
the fact that all the videos and lecture notes were provided on Brightspace
which really helped me in studying and reviewing the study material outside
class. It greatly added to my understanding of the course.  
 
Your understanding and compassion for all students are admirable qualities.
Thank you for making this semester so transformative.
 
With gratitude,
[redacted]

Good evening!
I'm [redacted], and I took CS 240 this semester. I wanted to share the
impact of this class on me.

I was very worried about this class because I had no experience in C. This
scared me because I had Java experience, but CS 180 was quite difficult for me.
Nevertheless, I loved this class and learned so much: of course, how to program
in C, but also how to be a better programmer in general. This class wasn't easy,
but I believe most valuable things aren't. 

I spent countless hours in office hours and lab sessions, and this experience
amplified a lesson I've been learning during my time here: it's okay to ask for
help. I would be embarrassed to ask for help, because I didn't want to be
perceived as dumb, but not asking for help just meant wasting time, and losing
out on valuable insight. 

I also wanted to commend the TAs for this class. They've been extremely helpful
not only in helping me completing the homework assignments, but in understanding
what I was coding, and why I was doing it. 

I'll be honest, I was initially perplexed and frightened at the prospect of
handwriting code for the exams. Looking back, I see the value of doing so.
Handwriting code and the emphasis on code standard is part of the reason I can
say I'm a better programmer: I can understand concepts and write effective,
readable code. 

When I first entered the realm of computer science, when taking an intro to
python course my junior year, I heard about working through binary trees and
linked lists for coding interviews. Back then, this seemed like a monumental
feat, something I would not be able to do. Here I am now, traversing trees and
linked lists for homework AND understanding why and how. There was really no
reason for me to convince myself that I couldn't do it. 

All in all, taking CS 240 was such a rewarding experience in that it helped me
think through coding problems, to understand what was needed, and how to fix
errors that popped up.

I also wanted to let you know that I really enjoyed the trivia breaks, and the
piano performances even more! I've been wanting to practice more throughout the
school year, and seeing you play encouraged me!

Thank you!

[redacted]

Dear  Professor, Turkstra
This weekend I will be graduating with my BS in Industrial Engineering. As I
look back at my 4 years of Purdue education, I remember profoundly you and your
CS180 I took in Fall 2018.  

Your teaching has helped me a lot to gain a foundational knowledge in
programming.  Through you, I learned more than the Java syntax and OOP, I
started to think in Object Oriented design and structure.  It is so rewarding
when you can translate a problem or an algorithm into a working program. All
thanks to you, you have greatly influenced my life and soon work. I still have
my notes and often refer to them.  

Also I want to thank you for helping me with a letter of recommendation when I
tried to transfer to UM to be closer to my parents due to health. 
Thank you very much for the course and for knowing you. I enjoyed every minute
of your lectures as well as our interactions.
 
BTW I left you a small thank you gift at your door.

Warm Regards, 
[redacted]

Hello,

I took your CS307 class last spring and your CS240 class the spring before that.
I just wanted to reach out to you to say thank you for teaching the courses the
way that you did. Especially CS307. Without that course, I would be
significantly less prepared for this career fair. Working on a large project
gave me so much experience. I loved working with the scrum model and having a
team. I also love how it was very open ended which made us put more effort into
the project and care more about it. I'm not sure how many students thank you
after your classes so I figured I would let you know how much you've helped me
grow as a programmer.

Sincerely, [redacted].

Dear Dr. Turkstra,

I wanted to extend a personal thank you for being one of my (and first!) CS
professors at Purdue. I’ve just been notified that I have been offered a full
time position at Eli Lilly after I graduate in the spring! I took your CS180
section in Fall 2018 and CS240 in Spring 2019. Your passion for Computer
Science, C, Linux, and so much more helped get me to where I am today. I will
never forget the WinDOZE joke - and how I learned over the next few semesters it
was no joke. You’ve successfully converted me to Linux. 

Purdue students are lucky to have you guide them into this fascinating field and
show us how many different paths we can take. My undergrad has been interesting
to say the least going through a global pandemic and half of it online, but
that’s what us CS majors do. We adapt to new situations and “try it out” (that
was one of my favorite answers that you gave when someone asked “what happens if
you do this?”)

So again, I thank you sincerely for all of your help and passion in your role as
a professor. I can’t wait to see the impact I can make on my field and share the
knowledge you’ve shared with me as well. 

Boiler Up!

Sincerely,
[redacted]

Hi,

I just wanted to say, congrats on being voted best professor!  I didn't vote
because I didn't really know about that, to be honest, but if I did I would have
voted for you.  You have made me fall in love with C and not even just that,
computer science in general.  I was told this class was going to be really hard
in a bad way and that I would dread it every week however that is just not the
case.  I love when the new homework comes out each week because I look forward
to doing them.  I also love using a terminal which I know many students do not
but you did an amazing job at helping me through it and making it easier and
more enjoyable.  This class has been a blast and I will miss it in the future.

Thank you for everything thus far!

[redacted]

Good evening, Professor Turkstra! I'm [redacted].
I just want to say thank you for the past fall semester. I really like your
amazing lectures and I also appreciate your patience in email and office hours.
It's been a wonderful experience for me in CS240, and I get an A at the end. I
found your class meaningful and helpful, and I've learned a lot in it. 

Hope you have a fantastic break and Merry Christmas!

best, 
[redacted]

Professor Turkstra,
 
Hope you are doing well! I just wanted to thank you for making my college
experience memorable and for getting the opportunity to work as a TA with you
for three semesters. I really enjoyed working as a TA for CS 307 and CS 240 and
learnt a lot during this time.

Also, thank you for all that you do for your students! I really enjoyed your CS
180 class and was actually excited to come to class every day. I am very
thankful for passionate professors like you!

I hope to stay in touch and I will be joining Oracle as a software engineer
after graduation.
 
Thank you,
[redacted]

Hello Prof. Turkstra,
 
I wanted to begin this email by thanking you (and the rest of the people who
helped run the CS 240 course) for adapting the course to an online course so
well.  In my opinion, the transfer of this course to online was the best out of
any of my courses this semester and I think a large part of this was due to the
helpfulness of the professors, GTAs, and TAs in lectures/office hours/Piazza.  I
also enjoyed watching your lectures as they were very engaging (and often funny
at times!).  The last thing I wanted to thank you for was replacing the last two
exams with the project.  I personally really enjoyed the challenge and the
development of a larger project than just our homework assignments.  It also
seems like a more realistic expectation from a software developer than an exam,
so thank you.
 
[...]
 
I hope you have a great summer!
 
Thank you,
[redacted]

Hello, hope you are doing well through all of this. My name is [redacted],
and I am a current student in your CS240 course. I know a lot has been going on
in figuring out the course workload recently, but I am here to thank you for
your commitment to the course throughout all of these changes. This course,
although it has proved a challenge, has genuinely helped me in my understanding
of functional programming. The "iTunes" project has done a great job of
introducing me to a more realistic work environment, and has severely aided in
my practical understanding of the language as a whole. The work that we have
accomplished so far has pushed me to work alongside my boss this summer in the
production of a small web REST API and corresponding front-end. But as a closing
statement, thank you. Your course, although likely not the same opinion that
others hold, has been greatly appreciated. Thank you for your commitment to our
education throughout all of these changes.

Sincerely,
[redacted]

Dear Professor,

I wanted to let you know that I found your latest lecture on Buffer Overflows,
System Calls and Assembly very interesting. I loved the way you explained the
concepts and it made me want to engage more in the topic of system security. I
was wondering how I should go about doing this apart from taking the security
track in Purdue, perhaps a project or anything else.

I appreciate the time you spent reading this email and thank you again for the
wonderful lecture. I thoroughly enjoyed it.

Sincerely,
[redacted]

Dear Dr. Turkstra,

I was helping my little sister with homework and realized it is Teacher
Appreciation Week. I wanted to tell you that I am lucky to having attended your
course and further connected with you. I cherish every bit of advice and tip I
got from you, and the support you have given writing me a letter of
recommendation. . Thank you for your passion and dedication – I appreciate you.

[...]

Truly, [redacted]

Student Nominations

The following are comments from my nomination for the Favorite Faculty Award...

In the first full semester affected by the COVID-19 Pandemic, Professor
Turkstra was able to make our asynchronous CS240 course lively, engaging,
and challenging in a satisfying way.  His lectures were something to
look forward to during the weeks, and I gained a lot from his passionate
teaching style.  Prof. Turkstra went above and beyond to make the class
as similar and it could have been in-person, and I commend him for the
extra effort taken in connecting with his students and providing clear
and helpful instruction outside of the lectures.

I had this professor for CS240 in the Spring of my freshman year. The
class was hard and in the middle of the semester, we were hit with the
Covid situation. He was not the professor of my section, but he taught
both sections. He had the best lectures I have ever had in Purdue. He
was precise, clear, and very passionate about his subject. He would help
everyone and care about our academics and was aware and understanding
of our circumstances. He made me really like my major.

Student Evaluation Comments

Select comments from course evaluations throughout the years. Each bullet point is a unique student for that semester...

CS 240 Spring 2022 CS 180 Fall 2021 CS 240 Fall 2021 CS 307 Spring 2021 CS 240 Fall 2020 CS 240 Spring 2020 CS 307 Spring 2020 CS 252 Fall 2019