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 2024: Instructor (754 students)
Spring 2023: Instructor (631 students)
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 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 2023: Instructor (151 students)
Spring 2023: Instructor (191 students)
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 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 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.

Sample Material
Syllabus

Fall 2023: Instructor (130 students)
Fall 2019: Instructor (119 students)
Summer 2018: Instructor (34 students)
Spring 2018: Instructor (114 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 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.

Prof. Turkstra,

You probably don't know me, I'm not exactly the most active student,
but I'm a CS and Music double major and I love your lectures. I really
just want to compliment you on how you teach. Apologies for the large
block of text, but I want to articulate why you've been so helpful to me.

Honestly, when I enrolled in this class, I didn't think I'd get much
out of it. I've been programming in C/C++ for more than half of my
life, but your lectures have been such a good refresher and have even
helped clear up some gaps in my knowledge that I didn't even know I
had. I've had several bad experiences with taking entry-level courses,
so I appreciate your teaching in such an engaging way. Against my
expectations, I genuinely want to go to your lectures every day, which
is something I can't say for all of the CS classes I've taken so far.

I've been planning on sending this email for a while, but today's lecture
sold it for me. For around the past 4-5 years, I've been working on a
game modding project with a team of friends around the world. Pretty much
half of my life as a programmer has been spent staring at disassembly,
trying to find ACE exploits and reverse-engineering binaries, and
today was by far the best explanation of the basic techniques that
I've ever seen. I consider myself knowledgeable in the topic, and you
made something that took me months to learn easy to digest in a single
lecture. I genuinely want to applaud you for that. It's hard to teach,
and you make it look easy.

For some more context as to why I'm sending this, next year I am likely
taking a role as a student educator with [redacted]. I've always looked
to my lecturers and teachers in the past as inspiration for how to better
myself as an educator, and although music and CS have their differences,
you've helped me understand how to teach in a more engaging way. I've
done numerous years of Drum Corps (if you know what that is) with some of
the best music educators in the country, and I feel the same way in your
lectures that I do in sectionals with them, which is no small feat. It
genuinely is very hard to make an engaging CS lecture while packing it
with content, and you do that very well.

I know this email came out of nowhere, but I want to thank you for all
you do. See you next week and Boiler Up!

[redacted]

Hello Professor Turkstra,

I just wanted to thank you for a great semester. I really enjoyed the
class and learned a lot of practical skills.

Throughout the project I had to teach myself a lot as I attempted to
add features on both the front and back end, as well as learning how to
effectively interact with a team with individuals at all different levels,
but coming together with a common goal. Overall, I was very happy with
how the project turned out and am excited about its potential. Though
my team does not seem to be interested in taking it further, I am deeply
involved and plan to work on it a lot over this summer.

Generally, I just want to thank you for making this course what it is
and inspiring us to dream big with our project, as this would likely
have never gotten off the ground without you.

Have a great summer, and I hope to see you in the future!

[redacted]

Hello Dr. Turkstra,

I wanted to send this email as an expression of gratitude for your
teaching this semester. I have had the pleasure of being in your class
for now three semesters (CS 180, CS 240, CS 307). While many professors
at Purdue have been great and engaging, your classes truly made me excited
to be in computer science. Excitement about your field is (unfortunately)
sometimes a rare occurrence when academic stress comes into play. Yet
your lectures, insights, and obvious excitement regarding the content
you teach have given me the best experience learning about computing
and software engineering. Thank you for the great semesters!

Thank you!
[redacted]

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 2024 CS 307 Fall 2023 CS 252 Fall 2023 CS 307 Spring 2023 CS 240 Spring 2023 CS 307 Fall 2022 CS 180 Fall 2022 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