INFO-I101: Final Review

Learning Objectives

The top-level items are the course learning objectives from the syllabus.

Pre-Midterm

Learning objectives from before mid-semester were covered on the midterm review guide (should these be covered on the final exam?):

  1. Define the field of informatics and describe several of its areas of application.

  2. Develop problem solving strategies and skills that can be applied to information and to problems in other areas.

  3. Analyze numerical data using spreadsheets.

  4. Design, develop, and use a database.

  5. Describe digital representations of information; interpret common digital representations.

  6. Describe how computers work internally.

  7. Design and code basic HTML (web) pages.

Post-Midterm

  1. Use appropriate standards of ethics and etiquette for information and information systems.

    Reference: Chapter 11; Social Aspects.

    1. Give examples of good and bad netiquette; critically evaluate network behavior.
    2. Give examples of social networking and “crowd power.”
    3. Describe ways to create insecure passwords.
    4. Be alert to hazards of spam, scams, and phishing.
    5. Discuss issues concerning copyright and patents
  2. Discuss and critically evaluate legal and social issues involving information technology.

    Reference: Chapter 12; Security and Privacy.

    1. Define privacy.
    2. Compare US vs. European privacy laws.
    3. Discuss issues involving web browser cookies.
    4. Describe how to avoid malware.
    5. Explain principles of public key encryption.
    6. Define cleartext, ciphertext, key.
  3. Design, code, debug, and interpret simple programs using sequences of instructions, selection and iteration control structures.

    Reference: Introduction to the Hour of Code; Lecture notes on algorithms; Introduction to JavaScript; see especially Summary of JavaScript.

    1. Design algorithms, expressing them in pseudocode, using the sequence, repetition, and conditional (if or if-else) control structures.
    2. Distinguish between algorithms and programs.
    3. Explain the concepts of function and variable.
    4. Read (interpret) and write simple programs in JavaScript.
  4. Describe the potentials and limits of computation.

    Reference: Chapter 22; Limits of computing (see espcially the “Building Watson” video and the “Reflections on Limits of Computing”).

    1. Describe the task(s) of artificial intelligence and some of its recent achievements. Speculate reasonably about where it will go.
    2. Describe the Turing Test.
    3. Comment on the ability or inability of computers or computer programs to be creative (e.g., in music or art).
    4. Discuss how Moore’s law has affected and will affect the power of computers.
    5. Discuss intractable problems.
    6. Give an example of a function that cannot be computed.
    7. Discuss the prospect of quantum computing.

Practice Problems

  1. Discuss conditions under which you are permitted or not permitted to give away free copies of software, literature, music, or video not produced by you.
  2. Should the software implementation of an algorithm be patentable?
  3. Describe three ways to make an insecure password.
  4. What is privacy? What does your government do to protect your privacy? What can you do to protect your privacy?
  5. Why do we need public key encryption? How does it work?
  6. What is a variable, in computer programming?
  7. How is a program different from an algorithm?
  8. What is Watson? What does it teach us about the potential of computers to “think”?
  9. Moore’s Law predicts doubling the number of transistors on a chip about every two years. What are the practical implications of this?
  10. What kind of problems are considered “intractable” in computer science?

The remaining questions are about JavaScript.

  1. Write JavaScript statements that:
    1. Declare a variable named age and make it store the value 72.
    2. Increase the value of age by 1.
    3. Print the message “Hello” to the console.
    4. Print the message “red”, if age is greater than 100; otherwise print the message “green” (using if ... else).
  2. Consider the following:

    var uppity = function (x) {
        return x * x + 3 * x + 9;
    };
    1. What is the parameter of the function?
    2. What is the value returned by the function call uppity(10)?
  3. How many times does the for loop below print “Hello”?

    for (var i = 0; i < 100; i++)
    {
        console.log("Hello");
    }
  4. Consider the following code:

    var count = 0;
    var x = prompt("Enter a number greater than zero");
    while (x < 100)
    {
        x = 2 * x + 1;
        count = count + 1;
    }
    console.log(count, x);
    1. What can we say, if anything, about the value of count that will be printed by console.log when the loop ends?
    2. What can we say definitely about the value of x that will be printed by console.log when the loop ends? Can we say, for example, x < 100, x = 100, or x > 100?
    3. Suppose the input value for x is -1 (contrary to the prompt instruction). What will happen?
    4. Under what circumstances will the value of count be 0 when printed by the console.log after the loop ends?