top of page
Search

CSS-100 Mod 6 Review

This is a a summary of October 29th class.


The source provides an outline for a Computational Thinking and Technical Writing course module focused on Pseudocode and Video Game Design. It announces guest visits from an advanced algorithms professor, Dr. Abdullah Alshboul, and a writing expert, Ms. Nichole DelValley, both from National Louis University, to discuss special topics and academic writing, respectively. The material covers core concepts in computer science, such as algorithms, the Von Neumann Architecture, and the contrast between machine language and high-level languages like Python, emphasizing the importance of problem-solving over just programming. Finally, the course includes multiple activities, such as a Pseudocode class exercise, a discussion on career paths in video game design, and a class design critique aimed at improving the course content.



Dr. Moore's Mod 6 Presentation


5 Human-Centric Lessons I Learned in a Computer Science Class

When most of us think of computer science, we picture a world of dense, complex code and abstract logic—a field reserved for technical specialists. But what if the core principles of computational thinking were less about machines and more about a clearer, more effective way for humans to solve problems?

A university-level computer science course revealed that behind the intimidating jargon are surprisingly human-centric frameworks for clarity and creativity. Here are five of the most impactful and unexpected lessons that apply far beyond the world of programming.

1. You’re a Problem-Solver First, a Coder Second

The most fundamental shift in perspective is realizing that writing code is not the primary goal; it's a tool to achieve the actual goal, which is solving a specific problem. The programmer's true value lies in their ability to understand a challenge and architect a solution using technology.

You are more than a programmer. You are a problem solver.

This mindset is powerful because it elevates the work from mere technical execution to strategic thinking. It reframes the job around its ultimate purpose, a skill valuable in any profession. As the course material states, "Your value to any company is your ability to solve problems using software technologies." This focus on problem-solving is the foundation, but to solve a problem, you need a clear plan of attack.

2. An "Algorithm" Is Just a Fancy Word for Clear Instructions

The word "algorithm" sounds complex and highly technical, but its definition is refreshingly simple. It isn't just for computers; it's a fundamental part of human communication and the primary tool for any problem-solver.

If you are writing detailed instructions, step-by-step for people or machines to understand, you are writing an algorithm.

This broad definition means we use algorithms constantly in our daily lives. Following a recipe, assembling furniture from a manual, or giving a tourist directions are all forms of writing and executing algorithms. This realization demystifies the concept, revealing it as a universal tool for ensuring a process is clear and repeatable. But creating instructions that are merely functional is one thing; creating instructions that are elegant and easy for others to understand requires a deeper philosophy.

3. The Poetic Soul of a Programming Language

You might not expect to find a philosophy of beauty and elegance embedded in a programming language, but that's exactly what exists within Python. A set of guiding principles, known as "The Python Poem," steers developers toward creating code that is not just functional, but also clear and readable for other humans.

Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts.

This last line—"Readability counts"—explicitly connects to the idea of an algorithm. A readable program is a clearer, more effective algorithm, not just for the machine, but for the next human who needs to understand, fix, or improve it. Finding an emphasis on aesthetics and simplicity in such a technical field is a profound reminder that clarity is a universal good. Now, with this problem-solving mindset and a philosophy of clarity, we can turn to the first practical step of tackling any challenge.

4. The Secret to Solving Big Problems: Don't Boil the Ocean

The first and most critical step in solving any major challenge is to define a "well defined and practical problem." The course uses an evocative phrase to capture the most common mistake: trying to "boil the ocean." This means taking on a problem so vast and poorly defined that it becomes impossible to solve.

For instance, compare these two problem statements:

  • A well-defined problem: Researching computer science alumni from National Louis University who graduated in the last 20 years. This is achievable because it has a limited population (NLU alumni), a specific timeframe (last 20 years), and a clear goal.

  • A poorly-defined ("boil the ocean") problem: Investigating if AI will change all careers for all college graduates in five years. This is too broad to tackle effectively.

Once a problem is well-defined, the path forward follows a simple but powerful structure that serves as the problem-solver's practical toolkit: define the Input (the problem), the Process (how you'll solve it), and the Output (the results). Once you have a well-defined problem, the next step is communicating the solution—a process that requires careful translation depending on whether your audience is a person or a machine.

5. Programming Is Ultimately an Act of Translation

At its core, programming is an act of bridging two very different worlds. The concept of "Program Language Abstraction" explains that there are different levels of communication. High-level languages like Python—with their poetic emphasis on readability—are "People-Friendly," designed to be understood by the human mind. At the other end is machine language—the binary 1s and 0s—which is "Machine-Friendly."

The entire purpose of a modern programming language is to act as a translator. It exists to abstract away the machine's complexity so the problem-solver (Lesson 1) can focus on creating a clear algorithm (Lesson 2) that can eventually be converted into the simple on-and-off electrical signals a computer's hardware can execute. This highlights a universal truth about effective communication.

You have to communicate differently on how to solve a problem if you are addressing either people or the computer machine.

A New Way of Thinking

Computer science isn't just about computers; it's about structure, clarity, and a methodical approach to breaking down complexity. By embracing the problem-solver mindset and using tools like the Input-Process-Output framework, even the most daunting challenges become manageable acts of translation. These principles offer a powerful, human-centric framework for solving problems that extends far beyond a screen.

What complex problem in your work or life could become simpler if you defined its Input, Process, and Output first?


 
 
 

Comments


  • White LinkedIn Icon

© 2024 by nbmoore

bottom of page