Reading / Journal 1

Intro ✏️

Journals are a combination of a few things. First, the "journal." This is a very small weekly assignment where you write 200+ words (option 1) or submit "tinker" code (option 2). Second, the "reading." This is where I direct you to read from a book, an online article, or watch a video, and I supplement those with my own lecture notes, graphs, figures, quotes, or so on.

All other assignments and lectures build upon these. Usually, there will be more reading at the start of a unit and less at the end.

Reading

Computers, the machines, do not "think." Computers, the humans who carried out calculations in the distant past and whose name we've given to our machines, did think. They used certain strategies to get their work done that we see machines carry out more efficiently today.

Computers, the machines, execute steps. They do these steps in order and exactly as we tell them. They are crazy fast at executing these steps, and they decide based on the result of one step which next step to load.

They have a temporary "working memory" used to get things done, and they can use the hard drive, jump drives, and so on to "jot things down" for later to simulate a "long term" memory.

And computers only have a few, very basic movements they are physically able to do: like adding two numbers, calculating exponents, manipulating their working memory, and following the correct "branch" in logic when loading what next step to carry out.

Putting some of these basic steps together, just like legos, we can repeat instructions, execute "subroutines," and so on to help us solve a larger task.

Whatever "next big thing" we want our computers to do, we as programmers first have to break the "big thing" down into sequences of those few, very basic movements–the legos.

And everything we do in this course comes down to understanding and applying these concepts.

Now read from Chapter 1, sections "Understanding Computer Components and Operations" and "Understanding Simple Program Logic"

The book gives an example dangerous cake recipe. Can you think of something similar? Feel free to write about this in your journal.


Computer Science is not a science, and Computer Science is not about computers. Computer Science is a mathematics and linguistics of "solving things quickly."

It's a math subject because it's with analytical tools taken from calculus that programmers can prove that their sequence of steps is, in fact, an improvement to a previous, less efficient approach to solving some problem. (Just running your code to "see if it works" is not good enough when matters like national security or health care are at stake.)

And it's a linguistics subject because when we are communicating with the computer, by typing instructions in the form of source code, we need to have an agreed upon language that is both expressive enough for the human to use and unambiguous enough for the computer to understand.

In this class we are going to focus on the second part. What are the building blocks of modern programming languages, and why? Why these legos and not others? That'll be what we do, with lots of practice along the way, in our fifteen weeks together.

We programmers use text editors to write our code, not word processors. A text editor lets you see the exact contents of the file you are writing, which is important if you need to know exactly what it is your instructions will be to the computer. It stands between the human coder and the machine. A word processor on the other hand, like Microsoft Word, hides those details, letting the writer of an essay or company report focus on the informational details. It stands between the human author and the human audience.

(In this course, we'll use Repl.it, a free online tool that has a text editor built-in. It's fairly similar to editors like Caret, Sublime, and Visual Studio Code.)

Now read the article "Learn about Text Editors in Five Minutes" from https://learntocodewith.me/programming/basics/text-editors/

And read the article "The History of 'Hello World'" from https://blog.hackerrank.com/the-history-of-hello-world/

What are features that you believe will be useful for you from a text editor in this course? Feel free to write about this in your journal.


The best way to learn a language is practice.

The best way to learn linguistics is to learn five languages.

In this course, we will see multiple languages. Each student will be assigned one of eight languages (all are object-oriented and are options for KCTCS courses later) that they will be in charge of learning.

These are:

  • Compiled Languages: C/C++, C#, Java, and Visual Basic
  • Interpreted Languages: Javascript, PHP, Python, and Swift

And I will use a ninth, Julia, when I give examples in lectures and other assignments. I've chosen Julia for myself because:

  • I rather enjoy it
  • It is a real, runnable language
  • It is nearly identical to the pseudocode used in the textbook

In the first Lab assignment, I give links to tools to let you run each of these languages, and in the first Check-in you will let me know your language preferences. I will assign you exactly what you say you prefer, so long as two other people will also be working on the same language OR you make a good case for the language you pick.

Journal

Choose from one of the following two options as you best see fit:

Option One: Submit a brief "200+ Words" reflecting on the reading and/or the course as a whole. These 200+ words are expected to come completely from the student, ignoring words from quotes/etc. The format of these assignments is up to the student as it best helps them: bulleted point notes on the reading; questions directed at the instructor of course material; a paragraph reflecting on the Lab assignment for the week; a poem; a summary of recent technology news; anything, so long as it is turned in on time, is relevant to the course, and meets the required length.

Option Two: Submit a brief "Tinker" where you have attempted to "program" something, using the tools of the course, that is not directly related to another course assignment. Include screenshots of the input work done and the output result (even if it does not work), along with a brief statement of your intentions, the approach you took in getting it to work, and your thoughts on your result so far. Make sure it is clear what code came from you and what came from online/the reading/etc.

Short on Words?

Short a few words in your journal and don't know what else to write about?

This week's "get to know you" question is:

Share a personal achievement or milestone you reached recently, no matter how big or small. (Credit)

Feel free to write about this a little bit in your journal.

Submission

Submit your journal as a Word/PDF (NOT a .pages) document to Blackboard.

Grading

Journals are each worth 1/100 towards your final grade. Grading is pass/fail based on meeting the requirements of the chosen option.