John Cole

I'm a senior lecturer here at the University of Texas at Dallas. I had taught at Collin County Community College for three years, and prior to that, at Illinois Institute of Technology in the mid-1970s, which is also where I earned my degrees. Before joining the full-time faculty at UTD in Fall 2012, I had taught part-time for 13 semesters.  I have been a software developer for many years, working on projects as diverse as a SNOBOL4 compiler, a DATABUS compiler, a word processor, the operating system for an early computer, statistical analysis of insurance claims, telecommunications, and embedded programming.  Essentially, I would write anything for which someone would sign a check.  I have used a variety of languages, including Java, C++, C#, Visual Basic, Databus, Intel assembly language, and many others. I still do some outside programming.  Note to graduate students: I am not a researcher nor can I give you an assistantship of any sort.

Welcome to The University of Texas at Dallas

Office Hours for Fall 2018: Regular office hours do not apply.
Wednesday, December 12: 1:00 to 3:00 PM in ECSS 4.606
Monday, December 17: 10:00 AM to 1:00 PM in ECSS 4.606
No further office hours until January.

Office: ECSS 4.606. Phone: 972/883-6353
E-mail me at [email protected]  Please use this instead of eLearning for correspondence. 
Students, if this concerns a class, please include which class and section you're taking in the subject line.
Locate buildings and rooms with the Campus Map

I'm the faculty sponsor for the student chaper of the ACM at UTD.  Check their Web site for information on events.
I love to tinker with embedded programs, the Raspberry Pi, Arduino, and of course write little Android apps. 
Here are some of my personal projects.


Date Posted

Announcement

8/31/2018 I have added new page on How to program,  explaining a technique I have been using for years. I know you know how to program.  Read this anyway.
6/18/2018 A word about finding code on StackOverflow, Github, etc. Yes, you can find quite a bit, and I have heard the argument that in the real world, you'll do this as a matter of course. Well, maybe, or maybe not. Consider the following scenario, a variation of which has played out many times during my career as a software developer: My manager tells me to go talk to Teresa Ybarra, who is an accountant in the "recovery" department. She needs a highly specialized program to track overpayment reimbursements, and I am to learn her requirements and write it. If all I had done in school was find code online and hand it in, without the ability to analyze a problem and design a solution, I'm out of luck.
4/9/2018 A few of my classes might find the DeviceList program handy.  It lists all of the sensors on your Android device.  Click the link to download the APK, but you'll need an APK installer to get it onto your phone.
8/1/2017 As a teacher, I will be competing for your attention.  Other things competing for that most valuable commodity are your cell phone, your computer, other people in the class, and your own thoughts.  Here is a ted.com video on how the tech companies manipulate you to keep your attention on what they want you to see.  This is particularly useful if you're taking a human-computer interactions or virtual reality course.  Also highly recommended for freshmen.
6/1/2017 The Pong game I wrote for the Android workshop starting in June 2013 has been productized and is available free of charge (and worth every penny of it) on the Google Play Store. Do a search on "John Cole Pong" and you can download it.
8/15/2016 Paul Fishwick's TEDxUTD talk on finding computing in everyday objects.
7/3/2016 My favorite language for most projects is C#, and I will be using it in some of my advanced classes.  Here is a link to Microsoft's tutorial for absolute beginners.
6/10/2016 Computer Science Department attendance policy for graduate courses: If you miss the first three classes, your final grade will be one letter grade lower than it would have been had you attended.  If you miss the first four classes, this is an automatic F grade. 
1/4/2016 Undergraduate Research Expo on February 27, 2016  Show off your undergrad research and win prizes.
6/15/2015 Embedded Systems and Robotics Workshop, PES University, Bangalore, India
5/22/2015 Slides from the Technical Writing Workshop on May 21, 2015.
2/21/2009 Link to "Sixth Sense" wearable computer video from the ted.com site.  In general, there is always interesting stuff on that site.
http://www.youtube.com/watch?v=ZfV4R4x2SK0

Teaching Philosophy

Every course I teach with the exception of CS1200 will involve significant amounts of programming. There is an ancient saying attributed to Confucius that goes like this: "I hear and I forget. I see and I remember. I do and I understand." In my classes, I use a combination of PowerPoint slides, lecture, examples, and in-class exercises so you can both see and hear, and sometimes do, as well. More...


Useful Links Within my Web Site and UTD
Programming Tips, including Android, C++, etc.  There are code samples you can use for some of my classes.
How to comment your code.
How to write code.  A succint explanation of a technique that will save you time and give you good results.
ScanTron form, correctly filled out.  The entire form, including your name and course, must be done in number 2 pencil only.  Pen does not scan and you will lose 10 points for any corrections I must make to your form, including using the wrong one, using pen, etc. The "ID" field is a number that will be assigned to you as a "grade" in eLearning.  Ideally, you should have filled in the information other than the answers (I have shown a few sample answers, but ignore those) before you come to class.
Grader Guidelines for graders to follow and students to understand.

You will find assignments and other class material on eLearning, also called Blackboard.
The Computer Science Department main page contains recent events and other information. It's also pretty cool.
UTD International Student Services Organization.  Given the importance of writing in most of my classes, if English is not your first language you will find useful events, such as conversation workshops, writing help, and other help here.  You can get writing help from the Student Success Center's Writing Center.  I cannot stress enough the importance of good writing.
The Computer Science Mentor Center can help you with CS1336, CS1337, and CS2336, among other classes.  Click here to go to the Center's official page.

Useful sites outside of UTD

Notes for anyone taking my classes.  Read This!

Courses Spring 2019

CS1337.009 Computer Science I on Monday/Wednesday from 10:00 to 11:15 AM in JSOM 2.803
CS6326.001 Human-Computer Interactions on Tuesday/Thursday from 8:30 to 9:45 AM in ECSN 2.112
CS1337.004 Computer Science I on Tuesday/Thursday from 2:30 to 3:45 PM in ECSS 2.312
CS4301.002 Mobile App Development (Android) on Tuesday/Thursday from 4:00 PM to 5:15 PM in ECSS 2.412

Courses Fall 2018

CS6360.004 Database Design on Monday/Wednesday from 8:30 to 9:45 AM in ECSN 2.112
CS6326.001 Human-Computer Interaction on Monday/Wednesday from 11:30 AM to 12:45 PM in ECSS 2.306
CS1200.011 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 10:00 to 10:50 PM in RH West 2.401
CS1200.006 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 11:00 to 11:50 AM in RH West 3.100
CS1200.007 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 1:00 to 1:50 PM in RH West 3.100
CS1200.013 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 2:00 to 2:50 PM in RH West 3.100

Courses Spring 2018

CS1337.009 Computer Science I on Monday/Wednesday from 10:00 to 11:15 AM in Residence Hall Northwest MP Room
CS6326.001 Human-Computer Interactions on Tuesday/Thursday from 8:30 to 9:45 AM in ECSS 2.311
CS4301.003 Mobile App Development (Android) on Tuesday/Thursday from 11:30 AM to 12:45 PM in ECSS 2.203
CS1337.004 Computer Science I on Tuesday/Thursday from 2:30 to 3:45 PM in ECSS 2.312

Courses Fall 2017

CS6360.004 Database Design on Monday/Wednesday from 8:30 to 9:45 AM in JSOM 11.206
CS6326.001 Human-Computer Interaction on Monday/Wednesday from 11:30 AM to 12:45 PM in GR 3.302
CS1200.011 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 10:00 to 10:50 PM in ECSN 2.110
CS1200.006 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 11:00 to 11:50 AM in ECSN 2.110
CS1200.007 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 1:00 to 1:50 PM in ECSN 2.112
CS1200.015 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 9:00 to 9:50 AM in ECSN 2.112

Courses Spring 2017

CS1337.009 Computer Science I on Monday/Wednesday from 10:00 to 11:15 AM in RH West 2.401
CS6326.001 Human-Computer Interactions  on Tuesday/Thursday from 8:30 to 9:45 AM in ECSS 2.311
CS4V95.012 Undergraduate Topics in CS: Fundamentals of Mobile Application Development on Tuesday/Thursday from 11:30 to 12:45 in RH West 2.401
CS1337.004 Computer Science I on Tuesday/Thursday from 2:30 to 3:45 PM in ECSS 2.312

Courses Fall 2016

CS6360.004 Database Design on Monday/Wednesday from 8:30 to 9:45 AM in ECSS 2.306
CS6326.001 Human-Computer Interaction on Monday/Wednesday from 11:30 AM to 12:45 PM in ECSS 2.410
CS1200.015 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 9:00 to 9:50 AM in RH West 3.100
CS1200.006 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 11:00 to 11:50 AM in RH West 3.100
CS1200.011 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 10:00 to 10:50 PM in RH West 3.100
CS1200.007 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 1:00 to 1:50 PM in RH West 3.100

Courses Spring 2016

CS1337.009 Computer Science I on Monday/Wednesday from 10:00 to 11:15 AM in MC 2.410
CS6326.001 Human-Computer Interactions  on Tuesday/Thursday from 8:30 to 9:45 AM in ECSN 2.126 (This was CS6301.001 Special topics: User Interface Design for Mobile Devices)
CS4V95.015 Undergraduate Topics in CS: Fundamentals of Mobile Application Development on Tuesday/Thursday from 10:00 to 11:15AM in CB2 1.202
CS1337.004 Computer Science I
on Tuesday/Thursday from 2:30 to 3:45 PM in ECSS 2.312

Previous Courses

Suggested Reading.  A few of you have asked for this list so you don't have to write things down when I reference them in class.

Last revised: December 8, 2017