loader image
Skip to main content
If you continue browsing this website, you agree to our policies:
x

Topic outline

  • Unit 1: Introduction

    We begin this course by developing a motivation for learning programming concepts and by reviewing the history of computer programming languages, and show the connections between human thought and its expression in programming languages. We then discuss hardware – the physical devices that make up a computer – and software – operating systems and applications that run on the computer. We conclude with a brief discussion of the Java programming language, which we will use throughout the rest of the course. By the end of this unit, you will have a strong understanding of the history of programming, and you will be ready to learn about programming concepts in more detail.

    Completing this unit should take you approximately 11 hours.

    • Upon successful completion of this unit, you will be able to:

      • describe the history of software and computer design;
      • explain formal logic and how it is a subset of human logic;
      • describe the relationship between human logic, computers, and computer languages;
      • describe the basic computer model;
      • explain the programming life cycle;
      • discuss the history of the Java programming language;
      • set up a Java Development Kit (JDK) for Java development;
      • set up a NetBeans IDE for Java programming;
      • write and run a simple Java program; and
      • explain how computers are a tool to assist people and describe appropriate and inappropriate uses of computers.
    • 1.1: History and Motivation

      • These articles give some insight into the early history of computers, and introduce the powerful ideas that enabled the computer architecture of our day and that will influence computer architecture of tomorrow.

      • Read this article to supplement the previous articles. As you see here, the history of computers is split into "generations". This course will primarily focus on the third generation of computers, which began in the 1960s, and the microcomputer technology of today, which has meant that computers are now present in the homes of many people across the world.

      • Lest you get the impression that computers are a new phenomena, this short article demonstrates that computers, in one form or another, have been around since at least 18,000BC.

      • This article focuses on the evolution of programming languages over the years. How did programming languages change as the "generations" of computers advanced?

    • 1.2: Reflecting Human Thought via Computers

      • Aristotle lived in ancient Greece around 384-322 BC. He is credited with the invention of a field of philosophy called "formal logic". This is a way of thinking that only admits to something being absolutely true or absolutely false. For instance, an item is in one group or some other group but it can not be a member of more than one group at a time. Everything is black or white. There are no shades of gray. You may have heard this called "binary thinking". However, it is perfect for computers because computers are nothing more than black boxes filled with on/off switches that are either completely on or completely off. As such, there is nothing new about computers as we know them today. They simply allow us to mechanize complex constructs in formal logic, and to do so at very high speeds. Gottfried Leibniz (1700s) created a means of using binary values to perform arithmetic. Essentially, this is the translation of our usual Base 10 numeric values to Base 2 (binary) values, and the means to perform arithmetic operations on such values. George Boole (1815-1864) invented Boolean Algebra, a mathematical means of expressing and manipulating formal-logic variables using logical operators to get correct results in highly complex situations. So, briefly, you can see the philosophical and mathematical history that underlies modern computers. This history, and the mechanization of that history by computers, allows human thought to be reflected and carried out consistently, although not perfectly. (Computers can not even perform the operation 1/3 with absolute accuracy.) For this introductory course, it is enough to give some thought to formal logic and its basic ideas. Read these two chapters.

      • Supplement what you just read by reading the first chapter of this book. As you read, you will see the careful human thought that is required to create the logical constructs required to get the computer to do anything worthwhile. Section 1.6 begins the process of creating a formal syntax, or language, from human statements. In this course, we use the formal language Java to translate human statements into something that can be translated into the 1's and 0's the computer works with, the settings of the computer's electronic switches.

    • 1.3: Why Computers and Computer Programming Matter

      • One definition of innovation is the process by which solutions are created for complex problems. Another perspective sees innovation as creating something entirely new that takes situations and people down a path not previously conceived. Read this section, which discusses innovation and several practical aspects of bringing new ideas to fruition, and demonstrates case studies of successful applications.

      • Using computers more widely has benefited society greatly. However, computers have their limitations, as do we humans. For all the hype about "intelligent" computers, it is humans who create computers, who put data into computers, who write programs that process that data, and who select and interpret the results of that processing. Clearly, the "intelligence" of computers comes directly from the humans who create and use them. Thus, we can never say, "Oh, It was just the computer. It made a mistake." Spend some time thinking about that idea before you move forward

    • 1.4: Hardware/Software Model of a Computer

      • Review these notes. For maximum benefit, go through these notes interactively, thinking about and answering the questions at the bottom of each page. These notes are an experiment in applying the "programmed learning" method to web-based computer aided instruction. The subject is Java Programming for beginning programmers. The content is intended to start beginning programmers out on the track to professional-level programming and reinforce learning by providing abundant feedback. Java is a programming language that is used often in professional practice.

      • Review these notes. As you work through them, think about and answer the questions at the bottom of each page.

      • Watch this lecture on binary numbers, which are used to represent numbers in computer memory. In fact, all types of information, not just numbers, but characters as well, are stored in memory using binary bits (that is, digits) of 0 and 1. We still write numbers in our programs using decimal numbers, but the interpreter converts them to binary when it interprets them for execution as part of a machine language instruction (the interpreter interprets the Java statement to equivalent machine language statements).

      • Take this short quiz to see how well you understand what we've covered so far.

        • This quiz does not count towards your grade. It is just for practice!
        • You will see the correct answers when you submit your answers. Use this to help you study for the final exam!
        • You can take this quiz as many times as you want, whenever you want.
    • 1.5: The Software Development Lifecycle

      • Read this brief article about the programming lifecycle. As you read, consider the following steps of the programming lifecycle: Planning and Analysis, Design, Implementation, Testing and Debugging, Deployment, Maintenance
      • Three major approaches to software development, which are the means of carrying out the programming lifecycle, have been tried by practitioners. This article compares those three. The most used today are Unified and Agile. These processes help to guide software development projects. They are not software development in and of themselves. Always keep in mind that the goal is to deploy excellent software, not to follow processes.

    • 1.6: Overview of Java

      • This article explains the distinction between compliers and interpreters. It is important that you understand the difference.

      • Java is both a compiled and interpreted language. What you write as Java code is compiled into machine-independent bytecode. The bytecodes are interpreted for the particular machine the bytecodes are running on. In this way, Java becomes machine independent. Such is not the case for languages like C/C++, where the language code is compiled into assembly code for a particular machine. A linker turns that code into an executable for that machine.

      • This page shows how to download and install the latest version of the Java Development Kit (JDK). Read the instructions carefully to set the "classpath" mentioned in Step 3. Once JDK has been installed, you can write a simple Java program using an editor such as notepad and run it from a command prompt. Alternatively, Java programs can be written using an Integrated Development Environment (IDE) such as NetBeans, described below.
      • These instructions describe how to download and install NetBeans, a commonly used IDE for Java programming. Using an IDE means that you have all of the tools you need in one place (your "development environment") instead of having to organize things manually. Use the instructions in Step 2 to write a simple Java program called "Hello.java" and then compile and run it.
      • Work through these slides. As you read, think about and answer the questions at the bottom of each page. These will be your first experience with Java, so make sure you follow each step closely.

      • Think of the word that should fill in the blank for each statement. Click on each one to see what the right answer should be.

    • Unit 1 Assessment

      • Take this assessment to see how well you understood this unit.

        • This assessment does not count towards your grade. It is just for practice!
        • You will see the correct answers when you submit your answers. Use this to help you study for the final exam!
        • You can take this assessment as many times as you want, whenever you want.