Dr. Jeyakesavan Veerasamy works
as Director of Center for Computer Science
Education & Outreach and also as Teaching Faculty in the Department of Computer Science at the University of Texas at Dallas, USA. Prior
to joining UT Dallas in August 2010, he worked in US wireless telecom software
industry (Nortel & Samsung) for 16 years & taught online courses in
several colleges for 11 years in parallel.
Center for CS Education &
Outreach offers 100s of coding camps & clubs to school students in Dallas
area - it is one of the nation's largest CS Outreach programs run by any
university. 1000s of school students benefit from these programs every year.
Center also conducts technical workshops for UT Dallas students and
professionals.
Education in US |
Ph.D. in CS, 1999 |
The University of Texas at
Dallas |
|
M.S. in CS, 1993 |
The University of Texas at
Dallas |
Education in India |
B.E. in ECE, 1990 |
College of Engineering Guindy, Anna University, Chennai |
All Schools (Tamil medium) |
9th - 12th |
St. Xaviers
Hr Sec School, Palayamkottai,
TN |
|
8th |
Govt Hr Sec School, P.Ramachandrapuram,
village near Srivilliputtur, TN |
|
6th & 7th |
Nadar Hr Sec School, Rajapalayam, TN |
|
5th |
AKDR Elementary School, Rajapalayam, TN |
|
1st - 4th |
Kasturi (Govt) Primary School, P.Ramachandrapuram,
TN |
After returning to academia to
focus on teaching, Dr. Jey travels to India regularly to conduct technical
lectures & workshops and share US experience with Indian students. He has
the suitable material for school students as young as 2nd standard
kids and all college students. Now, his colleagues and his students have
started to travel to India to teach as well.
Review the list of topics for
workshops and guest lectures given below. You can access the latest
schedule and current availability at bit.ly/jey-india. Please email jeyv@utdallas.edu if you would like me to
visit your college and cover one or more topics.
Workshops: These
full-day sessions are typically conducted in the lab. They enable me to
interact with the students closely and ensure that the students understand the
concepts through hands-on exercises.
Introductory:
1 |
Enjoyable introduction to programming using
Alice (1-2 days) |
Learning to program can be exciting, or is
it? Fighting with logic, syntax errors, and improper planning, majority of
the students get frustrated and even resort to memorizing all the programs!
Institutions & global programming community has provided several
solutions to address these issues. After quick review of such tools, I will
deep-dive into one visual programming tool called Alice and go through lots
of hands-on exercises. This workshop is ideal for students who are new to
programming. |
2 |
Enjoyable introduction to programming using
JavaScript (1-2 days) |
This workshop will be based on Khan
academy's online resources using JavaScript. Students will listen to video
tutorials, then do hands-on exercises using JavaScript to draw and animate
objects. This workshop can be used to increase confidence in free-form coding
before hitting C++/Java. |
Advanced:
1 |
Recursive problems & solutions in
C++/Java (1 to 2 days) |
Recursion continues to be one of the tough
concepts to understand. While its value to commercial software development is
questionable, recursive concepts enable us to understand intricacies of
program execution. Elegance of recursive solutions for complex problems is
quite amazing too. |
2 |
Inheritance in C++ & Java (1 to 2 days) |
After covering the basics using simple
examples, I will cover multiple inheritance in C++ and compare with
interfaces in Java. If time permits, usage of inheritance in design patterns
will be covered. |
3 |
GUI based games in Java (1 to 2 days) |
Nothing excites the new generation like
games! So, why not use them to learn programming? I will cover a few games
like memory game, minesweeper, connect4, paddle-ball and deal-or-no-deal.
After covering the concepts, students will complete these programs in this
workshop. |
4 |
D&C, Greedy & DP algorithms in
action using C++/Java (2 to 3 days) |
Divide and conquer, greedy and dynamic
programming are 3 commonly used algorithmic approaches. Several interesting
programming problems will be used to strengthen students' understanding of
these algorithmic concepts & implementation skills. |
5 |
Problem solving and coding in Programming
Competitions (2 to 3 days) |
Lots of high school students and college
students around the world participate in programming competitions
(International Olympiad for Informatics, ACM International Programming
Content & Infosys Aspirations2020 Programming Contest are popular ones).
In this workshop, we will discuss and work through several programming
problems used in the competitions. This workshop improves the students'
thinking & coding skills and enables them to do well in technical
interviews and excel at the workplaces. |
Guest Lectures: Each
lecture approximately lasts 2 hours. Considering the attention span of
"current generation" students, I can present the core content of each
topic in 1 hour as well :-)
Introductory:
1 |
10 ways to make learning programming
enjoyable! |
There is no one perfect way to learn
programming! It can certainly vary from person to person, even language to
language. I will highlight several approaches people have used to learn
languages efficiently. |
2 |
Enjoyable introduction to programming using
Alice - Highlights |
Learning to program can be exciting, or is
it? Fighting with logic, syntax errors, and improper planning, majority of
the students get frustrated and even resort to memorizing programs!
Institutions & global programming community has provided several
solutions to address these issues. After reviewing a few such tools, I will
deep-dive into one visual programming tool called Alice and highlight its
features & show how it makes learning to program really exciting! |
3 |
Enjoyable introduction to programming
through Drawing & Animation - Highlights |
This material is based on Khan academy's
online resources. Students will understand how to utilize them, then I will
show a few hands-on exercises to draw and animate objects to introduce the
students to the wonderful world of programming! |
Intermediate:
1 |
Analysis of algorithms & time
complexity using examples |
"Time complexity" is a crucial
concept needed to analyze the efficiency of algorithms. Every CS/IT student
should be able to analyze algorithms and make improvements to existing
software to improve its running time. In this guest-lecture, I will start
with a simple textbook examples, then strengthen it using a few silly
real-world examples, and end it with serious software examples. No prior
knowledge about time complexity is necessary. |
2 |
Magic of searching : finding needle in
haystack |
Searching for specific item in a long list
is simple but effective problem to highlight the importance of efficient
algorithms. In this interactive guest-lecture, I will work with the students
to discuss various search algorithms and complete with the ultimate data
structure for searching: hash tables. |
3 |
Rise and Fall of Pointers |
More accurate title will be "Rise and
fall of explicit use of pointers in programming." C introduced the
explicit use of pointers in programming to handle dynamic memory & C++
continued the tradition as well. Unfortunately, pointers turned out to be
double-edged sword. While the sword is pretty powerful (to develop efficient
code), it was also responsible for lot of blood (SW bugs and crashes). Newer
languages like Java have moved away from explicit use of pointers. |
4 |
Learning CS concepts through real-life
analogies |
Learning through analogies a great way to
learn new concepts. Computer Science is no exception. I will relate several
computer science concepts to real-world scenarios and enable the students to
understand and admire the simplicity. |
6 |
Trends in Global Software Industry |
Starting with old waterfall model, I will
cover the time-line for the software industry. I will highlight the
efficiency brought by APIs and libraries (building blocks). If time permits,
I will talk about software efficiency using a few simple examples. |
8 |
Life as Software Engineer |
How was a typical day for Software Engineer
in 1990 vs. now? Focus has shifted from coding to integration of components.
Working with incomplete knowledge, learning something every day and
jack-of-all-trades seem to be the new norm. However a typical day for
software engineer seems to be quite different in India vs. USA. |
9 |
Evolution of Telecom Software |
Telecom industry has followed the IT
industry and it has emerged from 100% proprietary hardware & software, to
open platform using COTS. It has effectively merged with IT networking
industry. |
10 |
International Programming Competitions |
UN, ACM and Infosys are a few organizations
that sponsor and run international programming competitions every year. How
do they do? How do the students prepare? |
Advanced:
1 |
Recursive problems & solutions |
Recursion continues to be one of the tough
concepts to understand. While its value to commercial software development is
questionable, recursive concepts enable us to understand intricacies of
program execution. Elegance of recursive solutions for complex problems is
quite amazing too. |
2 |
Programming problems around Sudoku puzzle |
Sudoku has become popular in the past
decade. We will use it as basis to work on several programming problems. We
will go from validating a proposed solution to solving the Sudoku puzzle
itself. |
3 |
Inheritance using C++ & Java examples |
After covering the basics using simple
examples, I will cover multiple inheritance in C++ and compare with
interfaces in Java. |
4 |
C++ & Java: How different are they? |
Java's inventor said "Java is C++
without the guns, knives, and clubs". In other words, C++ has too many
knobs that programmers use without understanding fully. Why C/C++ continue to
rule in gaming software? |
5 |
Algorithms: D&C, Greedy & DP
concepts |
Every computer science graduate should know
these 3 algorithmic principles, whether they will directly use them in
industry or not :-) These principles are at the core of computer science - I
will explain them with a simple, practical problems. |
6 |
Time & Space complexity trade-off:
Hanoi Towers example |
Hanoi towers is a classic computer science
problem used for teaching time complexity and recursion. By varying # of pegs
(space), I will show that the time complexity can vary drastically. |
7 |
How to help a thief? |
Knapsack is a classic computer science
problem that teaches a rich set of concepts including recursion and dynamic
programming. I will walk through several related problems and solutions using
the actual code in an interactive manner. I will cover bit strange use of
Exception too. NP-complete and approximation algorithms will be covered as
well. |
8 |
Semaphores & Concurrency concepts using
Packaging problem |
Now-a-days, a typical laptop comes with 2
CPUs. Multi-processing enabled us to run multiple applications at same time.
Multi-threading has enabled us to break down software complexity (really?)
and improve reliability and user response behavior. Unfortunately, this
becomes a scenario of "too many cooks" now & then. Semaphores
enable us to achieve maximum efficiency while avoiding data corruption. I
will explain various concepts using producer-consumer problem and its
variation (packaging problem). |
9 |
Concepts behind the Minesweeper game |
Minesweeper is a simple game, but it uses several
basic and advanced concepts in computer science. Concepts: arrays, events,
recursion, graphics, applets, etc. If time permits, I will show a Java
implementation as well. |
10 |
P vs. NP vs. NP-Complete: what do they
mean? |
While most students reasonably understand
the algorithms that run in polynomial time, most of us have trouble in
visualizing NP problems - complexity theory has several subclasses within NP,
starting with NP-complete. I will explain these concepts using easy-to-understand
examples. |
11 |
Approximation algorithms - Postman tours |
This topic is related to my Ph.D.
dissertation. I will cover a NP-complete problem (mixed Chinese postman
problem), known approximation algorithms and show how improvement was
achieved. Then, I will cover a few variations as well. |
12 |
Final year CS projects |
How to select a meaningful final year
project? While we want to be appealing & practically useful, we also want
it to be achievable. I will explain how CS department in UT Dallas approaches
this issue and makes all parties happy. |
Education (for faculty):
1 |
Make programming fun - practical examples
& games |
Most computer science courses have become
boring & new generation hate them. One way to tackle the situation is to
use better examples and assignments. Students can enjoy the course and relate
to the content better if we utilize more practical scenarios and include
design of simple games. |
2 |
Teaching to program - historical view |
There are lots of ways to learn
programming. As late as one decade ago, most colleges used to teach a course
on flowcharts & pseudo code first - majority of students absolutely hated
it. Now, most colleges have moved on to utilize more hands-on learning right
away, but are the students really ready? |
3 |
State of undergraduate CS education in USA |
A typical CS department in US university
revisits the following issues every few years once: programming language
sequence, ensuring breadth and depth of content, handling the students who do
not belong to computer science, satisfying the needs of other depts' students, focus on theoretical concepts vs.
hands-on learning, quality of capstone projects, …. |
4 |
Online education is the future? |
Online education continues to flourish and
more employers are willing to accept online degrees. For now, it continues to
complement traditional education, but what will happen in the future? How can
we strengthen traditional education using online components? |
5 |
Best practices in Online education |
Online education has matured over the past
2 decades. Most online faculty and administrators agree on best practices,
but whether they have the will and resources to implement them? Are the
students ready? |
6 |
Industry Projects for Final year projects |
Almost all final year projects in Computer
Science dept. of UT Dallas are industry projects. Industry pays money to get
the project done and they are committed to support the project and see the
output. Students form the teams themselves and try to get the projects they
are interested in. They analyze, complete and commit the details in the
project proposal document. Then, they are accountable for the results! |
7 |
Current Research in CS at UT Dallas |
CS faculty @ UT Dallas have a variety of
research interests, but the following are the areas that have received lot of
attention in the recent years: Big data, data mining, cyber-security,
internet and human language technology. I will explain each area with a slide
or two. |
Email jeyv@utdallas.edu if
you would like me to visit your college OR you have any questions. Thanks for
your time.