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.