Research Topics
Dr Melniczuk - Human-Computer Interaction
1. What is HCI, and which disciplines contribute to it?
- HCI studies how people interact with computers and technology, and how to design that interaction well.
- It draws from psychology (how people think, perceive, and make errors), computer science (what's technically feasible), design (visual and interaction principles), and sociology and anthropology (how people behave in groups or contexts).
The Decision Lab - "Human-Computer Interaction" - link
2. Useful vs. usable, plus an example
- Useful means the system does something people actually need. Usable means it's easy and pleasant to use to get that need met.
- A system can be useful but not usable, e.g. a powerful piece of enterprise software like SAP. It handles complex business operations exactly as needed but is notoriously unintuitive, with cluttered menus and steep learning curves that make employees dread opening it.
- A system can also be usable but not useful, e.g. a beautifully designed to-do list app with smooth animations and satisfying interactions, that ultimately doesn't help you actually get anything done because it lacks real reminders or integration with your other tools.
Nielsen Norman Group - "Usability 101: Introduction to Usability" - link
3. A confusing everyday interface
- Capacitive touch screens used for managing large scale light systems, chosen for durability since they'll be touched by many people, but inconvenient because touches aren't always recognized.
- The person trying to accomplish a simple task, adjusting a light, ends up tapping repeatedly or pressing harder, since capacitive screens rely on detecting the electrical charge of skin contact and can misread inconsistent or lighter touches.
- A better fix would be an infrared touch screen with a protective casing. Infrared screens detect the interruption of light beams rather than relying on skin conductivity, so they respond more reliably regardless of touch pressure, while the casing still gives the durability the original design was aiming for.
Nielsen Norman Group - "10 Usability Heuristics for User Interface Design" - link
4. What is a prototype, and why test with users?
- A prototype is an early, often rough version of a design, whether a paper sketch, a clickable mockup, or a partial working version, used to try out ideas before committing to a full build.
- Testing with real users matters because what people say they prefer often diverges from how they actually behave. Someone might say they like something but still struggle silently or misuse a feature.
- Watching someone attempt a task reveals friction points that just asking opinions never surfaces.
UXtweak - "Prototype User Testing: Step-by-step Guide" - link
5. Interaction beyond keyboard and mouse
- Speech dictation and voice navigation for individuals unable to type due to any type of disability.
- This benefits users with motor impairments, or any condition that limits fine motor control needed for typing, letting them interact with technology entirely through spoken commands instead.
- To test whether it actually helps, you'd observe the intended user attempting a real task, like composing a message or navigating a device, using speech dictation, and compare their completion time, error rate, and frustration level against a control method they'd otherwise be forced to use, like an on-screen keyboard or assistive switch.
WebAbility - "Voice Control & Accessibility: Rise of Voice Interfaces" - link
Dr Christos - Theory of Computation
1. What is a decision problem?
- A decision problem is computational task which decides if a given input possesses a certain property, returning "True" or "False"
- For example: "Is this number odd?"
Medium - (Simran Tinani) - "Decision Problems - Decidability, Verifiability, and Complexity Classes" - link
2. What does it mean for a decision problem to be decidable?
- If a problem has an algorithm which can solve it in a finite amount of time
- If an algorithm can be constructed to answer a problem correctly, it is by definition decidable
GeeksForGeeks - "Decidable and Undecidable Problems in the Theory of Computation" - link
3. What is the class P? What is the class NP?
- Classes P & NP are used to classify decisions problems according to their ability to be solved or verified
- Class P - (P for Polynomial Time) - represents the class of all decision problems that a computer can solve quickly
- For example: The shortest path in a graph network
- Class NP - (NP for Nondeterministic Polynomial Time) - represents the class of all decision problems whose proposed solutions can be verified quickly, although finding actual solutions from nothing may take exponentially long
- For example: The travelling salesman problem
GeeksforGeeks - "P, NP, CoNP, NP hard and NP complete | Complexity Classes" - link
4. What is the intuitive meaning of the "P versus NP" question?
- Is every probelm whose solution is quick to verify, also quick to solve?
- Depending on the answer, P & NP are equal or unequal
5. If you resolve the P versus NP question, how much richer will you be?
- As P v NP is a part of the Millenium Prize problems, if I solved it, I would be awarded $1,000,000 by the Clay Mathematics Institute
Dr Reis - Programming Languages
1. Why did we move from punch cards to programming languages? What does that tell you about the purpose of programming languages?
- In order to program, holes had to be punched into cards with one card representing one line; any single defect, bend, or scatter ruined hours of work and carried a high risk of human error.
- Errors could not be discovered in real time, since you had to run the entire card batch. A single typo could mean the whole task had to be redone, making the process highly time inefficient.
- Storage technology itself improved such that code could be edited, something punch cards could not facilitate, and they were eventually replaced by magnetic tapes.
- All of this points to programming languages being a natural evolution from punch cards, as the requirements for time efficiency increased and the capacity for better storage appeared.
- Programming languages serve as the latest tool in a long term goal to bridge the gap between human thought and machine execution.
IEEE Spectrum - "From Punch Cards to Python" - link
Medium (Ryena Dhingra) - "A Brief History of Punched Cards" - link
Quantum Zeitgeist - "Programming Languages: From Punch Cards to Python" - link
2. Why do we need so many programming languages?
- Different programming languages exist to suit different jobs in the computer science and engineering industry. There is no single optimal language, since using any given language involves a tradeoff.
- There are also performance tradeoffs between lower level and higher level languages, sacrificing control over hardware and memory for faster, easier, and more readable coding.
ScienceABC - "Why There Are So Many Programming Languages?" - link
Stack Overflow Blog - "Why Are There So Many Programming Languages?" - link
3. Drawbacks of a language you use
- Python is interpreted, not compiled, so it is slower than C, C++, or Java. It is also dynamically typed, so many bugs (like adding a string and an integer) only appear at runtime instead of being caught early.
- There are many times when I am constrained for time, whether on an assignment or in a competition, and small errors like this waste time I don't have to spare.
GeeksforGeeks - "Disadvantages of Python" - link
4. How would you start creating a new language?
- I would first define its purpose and target demographic, identifying why it is needed and who will use it, then establish syntax rules for the language.
- I would use an interpreter, as line-by-line error reporting is, in my opinion, more convenient for writing code, and I would also choose a typing and caching system.
Dr Randy Pausch
Randy Pausch was a professor of Computer Science, Human-Computer Interaction, and Design at Carnegie Mellon University.
- The creator of Alice, a 3D programming environment that teaches coding via storytelling and interactive game building.
- He taught at the University of Virginia (1988 to 1997) before moving to Carnegie Mellon.
- Worked with Adobe and Google.
- Co-founded the Entertainment Technology Center at CMU with Don Marinelli.
- In August 2006, he was diagnosed with pancreatic cancer, and in 2007 found out it was terminal.
5 Points I Loved From Randy's Speech
- The difference in efficiency and societal value of money vs. time management is an issue, especially ironic since time is money.
- His advice to invest in a second monitor, since it increases productivity.
- Time is made by electing not to do something else. The bad thing about doing something of low value isn't the doing itself, it's the loss of time.
- Procrastination is not necessarily indicative of laziness. Doing things at the last minute is much more expensive than doing it just before the last minute.
- No one operates alone anymore, you operate more efficiently with others. Delegation is not dumping, it's granting authority alongside responsibility. If you trust someone to do work, you trust them to use the resources, time, and budget. Delegate, but always do the dirtiest job yourself.