|
John ColeI'm a Professor of Instruction in the Computer Science Department here at the University of Texas at Dallas. I taught part-time 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++, C#, Visual Basic, Databus, FORTRAN, 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
Spring Semester 2024 in ECSS 4.606. In person only.
Monday from 2:30 to 3:30 PM (After CS2340 class)
Tuesday: 11:00 AM until
noon
Wednesday from 11:30 AM to 12:30 PM (Before CS2340 class)
Office hours tend to be busy, so I must give priority to current
students. However, anyone, from former students and other faculty to lost
souls needing insecticide, is welcome to visit.
Office:
ECSS 4.606. Phone: 972/883-6353
E-mail me at John.Cole@utdallas.edu
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 or I may not answer.
Do not
e-mail me code to "have a look at and let me know if there are problems."
Come to office hours. I don't answer these.
I don't always answer
e-mail after 8:00 PM, and rarely on Sundays.
I rarely answer Teams texts that
are not in a class,
especially when they are requests for information you can find on my Web page or
in the course syllabus.
If you're asking for a recommendation, remind me which
classes you took from me and when. I teach hundreds of students every
year, and unless you sat near the front and participated, or came to office
hours frequently, I may not remember you very well. I always go back to
the work you turned in as part of being able to write a good recommendation.
Make sure it is good work and yours.
I'm the faculty sponsor
for the student chapter of the ACM at UTD. Check their Web site for
information on events.
I'm also the faculty Advisor for
Nebula Labs, a programming group
creating tools to help students at UTD.
As of August 1, 2021, I'm the Executive Director of the
Executive Master's in Software Engineering
(EMSE) program. This is for working professionals who want to get an
advanced degree by going to school part-time.
I love to tinker with embedded programs, the
Raspberry Pi, Arduino, and of course write little Android apps.
Date Posted |
Announcement |
12/18/2023 | From Cal Newport's book Deep Work: The Deep Work Hypothesis: The ability to perform deep work is becoming increasingly rare at exactly the same time that it is becoming increasingly valuable in our economy. As a consequence, the few who cultivate this skill and then make it the core of their working life will thrive. |
3/19/2022 | Use of GitHub. Some students use this for programming assignments, which is fine if it is a private repository. Code on a public repository can be found by anyone, including your classmates. If I find your code publicly available I will warn you once. The second time I will let you deal with the Office of Community Standards and Conduct, which may or may not have a problem with this. |
3/17/2022 | More about attention. The title of this article isn't anywhere near as interesting as the article itself: Human-Centered Approach to Static-Analysis-Driven Developer Tools. (You may need to either be an ACM national member or access this through the UTD library.) While my real purpose in reading it was to learn more about HCI in the context of developer tools, it turned out to be about much more than that. At the bottom of the subhead Context Switching is an Obstacle to Understanding Program Behavior the author observes that "[communication] has led to a workplace culture where visible activity is often conflated with productivity. A constant stream of notifications not only creates an artificial sense of urgency but is damaging to the deep focus demanded by programming. Research consistently shows that individuals experienced significantly more stress, anxiety, and irritability when tasks were interrupted." The point is when you start writing a program, focus on writing the program and nothing else. Do not answer e-mail, look at your phone (unless you're programming it,) or talk to anyone. If possible, work for at least one hour without interruption. |
8/29/2020 | "The more you sweat in training, the less you bleed in combat." This has various attributions. It is a wise truth. Do not complain about the difficulty of your assignments here at UTD, but consider them training for your career, where you will also be given difficult assignments. |
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, 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, and probably out of a job. |
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. (Google removed it in 2021 because I didn't keep it up to date.) |
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: 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 |
About our field, from Structure and Interpretation of Computer
Programs by Abelson and Sussman Computer science is not a science and its significance has little to do
with computers. The computer revolution is a revolution in the way we
think and the way we express what we think |
Teaching Philosophy |
Nearly every course I teach with the exception of CS1200 will involve lots 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.
These are code samples you can use for some of my classes. Uncommented code is bad and wrong. Learn How to comment your code. (You should comment it before you write it. That's why this section is first.) This is critical if you are taking one of my programming classes where at least 10% of your grade is based on the code comments. Spending far too much time writing programs? Learn How to write code. A succinct explanation of a technique that will save you time and give you good results. ScanTron form, correctly filled out. (Only for tests in the classroom.) 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, grades, 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 also 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, CS2340, and CS2336, among other classes. Click here to go to the Center's official page. Many books and journals that are useful in my classes are online at the UTD Library. |
Courses Spring 2024 |
CS2340.005 Computer Architecture on Monday/Wednesday from 1:00 PM to 2:15 PM in ECSS 2.306 |
CS6360.MS1 Database Design on 10 Friday evenings. in ECSS 2.305 |
CS4485.OW1 Senior Design. on Tuesday from 1:00 to 3:00; Friday from 2:15 to 4:00 Online on Teams; in person TBA |
Courses Fall 2023 |
CS1200.HON Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 1:00 to 1:50 PM in AD 2.232 |
CS2340.003 Computer Architecture on Monday/Wednesday from 10:00 AM to 11:15 AM in ECSS 2.305 |
CS3162.092 Professional Responsibility in CS and SE on Monday/Wednesday from 11:30 AM to 12:30 PM in ECSS 2.412 |
Courses Spring 2023 |
CS6326.001 Human-Computer Interactions on Tuesday/Thursday from 10:00 AM to 11:15 AM in ECSN 2.112 |
CS2340.005 Computer Architecture on Monday/Wednesday from 1:00 PM to 2:15 PM in Residence Hall West 2.401 |
CS6360.MS1 Database Design on 10 Friday evenings. in ECSS 2.305 |
CS2337.001 CS II. in ECSS 2.311 |
Courses Spring 2022 |
CS6326.001 Human-Computer Interactions on Tuesday/Thursday from 10:00 AM to 11:15 AM in ECSN 2.112 |
CS2340.005 Computer Architecture on Monday/Wednesday from 1:00 PM to 2:15 PM in ECS West 1.315 |
CS6360.MS1 Database Design on 10 Friday evenings. Online via Teams for first two classes. Room ECSS 2.305 |
Courses Fall 2021 |
CS6326.001 Human-Computer
Interactions on Monday/Wednesday from 8:30
AM to 9:45 AM in JSOM 2.717 |
CS1200.011 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 10:00 to 10:50 AM in ECSS 2.201 |
CS1200.006 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 11:00 to 11:50 AM in ECSS 2.201 |
CS1200.007 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 1:00 to 1:50 PM in ECS West 1.315 |
CS2336.005 Computer Science II on Tuesday/Thursday from 11:30 AM to 12:45 PM in ECSS 2.412 |
Courses Fall 2020 |
CS6326.501 Human-Computer
Interactions on Monday/Wednesday from 8:30 PM to 9:45PM
Online |
CS1200.011 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 10:00 to 10:50 AM Online |
CS1200.006 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 11:00 to 11:50 AM Online |
CS1200.007 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 1:00 to 1:50 PM Online |
CS2336.504 Computer Science II on Tuesday/Thursday from 7:00 PM to 8:15 PM Online |
Courses Spring 2020 |
CS1337.009 Computer Science I on Monday/Wednesday from 10:00 to 11:15 AM in ECSS 2.203 |
CS6326.001 Human-Computer Interactions on Tuesday/Thursday from 8:30 to 9:45 AM in ECSN 2.112 | CS4301.002 Mobile App Development (Android) on Tuesday/Thursday from 11:30 AM to 12:45 PM in ECSS 2.412 |
CS1337.004 Computer Science I on Tuesday/Thursday from 2:30 to 3:45 PM in ECSS 2.312 |
Courses Fall 2019 |
CS6360.004 Database Design on Monday/Wednesday from 8:30 to 9:45 AM in ECSS 2.412 |
CS6326.001 Human-Computer Interaction on Monday/Wednesday from 11:30 AM to 12:45 PM in CB 1.222 |
CS1200.011 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 10:00 to 10:50 PM in CB3 1.302 |
CS1200.006 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 11:00 to 11:50 AM in CB3 1.302 |
CS1200.007 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 1:00 to 1:50 PM in CB3 1.302 |
CS1200.013 Introduction to Computer Science and Software Engineering on Tuesday/Thursday from 2:00 to 2:50 PM in CB3 1.302 |
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 |
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
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
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.
*The 90s called and asked for their Web site back, but they can't have it. I'm using it, and it's easy to maintain and contains far more useful information than you will find on most professors' sites.
Last revised: August 20, 2022