COMP1511 17s1 Introduction to Programming
  1. Introduce yourselves, get to know your classmates - Why do they want to study computing? What do they want to learn from this course?
    Answered in tute.
  2. Get to know your tutor - How long have they been at UNSW? What are they studying? How can you get in contact with them?
    Answered in tute.
  3. Do you have any questions about the course so far? eg course website, structure, assessments
    See the course outline for details.
  4. How do you make a peanut-butter sandwich?

    How could you break that process into steps?

    How could you break it down clearly enough that a computer could understand it?

    Maybe your tutor could do a live demonstration of following your exact instructions...

    Computers are very literal, and you need to tell them *exactly* what to do, without assuming they know what anything means.

    For example: "take the peanut butter, and put it on the bread" could mean "pick up the jar of peanut butter and put it on top of the bag of bread".

    You need to be very explicit about every step, eg:

    1. Take a jar of peanut butter.
    2. Remove the lid from the jar by unscrewing it, and place it on the table next to you.
    3. Carefully open the bag of bread, without damaging the bread inside, and remove two slices of bread.
    4. Place the bread on the table next to you, lying flat.
    5. Take a butterknife, hold it by the handle, and put it into the jar of peanut butter.
    6. Carefully move the knife through the peanut butter to scoop up approximately a metric teaspoon of peanut butter, and then carefully spread it over one face of the bread, ensuring that the peanut butter is spread evenly and that you don't tear the bread.
    ... and so on.
  5. What is an operating system?

    What operating systems do your classmates run? The tute room? The CSE lab computers?

    What are the differences between each of the various operating systems? What differences are there in their interfaces, and how do you interact with them?

    What are some different ways in which you can interact with a computer?

    What are the differences between graphical user interfaces and the command line? When might one be better than the other?

    [answer]
  6. Discuss the following features of the sample program from lectures:

    // Author: Andrew Taylor (andrewt@unsw.edu.au)
    // Date created: March 2016
    // A very simple C program
    
    #include <stdio.h>
    
    int main (void) {
        printf ("I love COMP1511!\n");
    
        return 0;
    }
    
    • the \n
      It outputs a newline at the end of the line, following the character sequence I love COMP1511, starting the next line of output at the beginning of a new line on the terminal window. It is known as the newline escape sequence.
    • Comments: What should go in a comment? What makes a good comment? How do comments improve program style?

      The comment in the example, is a header comment. You should make sure you have a header comment with your name, date and the purpose of your program at the top of every program you write. Comments can also be added throughout your code to make it easier for a human to understand your program.

    • Indenting and whitespace: What is indented in the sample program? Suggest why.
      The code inside the main function block- in between the braces { and } is indented. This is to help humans read the code!

      White space is required between C language keywords. For instance you can't have intmain without any intermediate space. Statements are placed on separate lines. Additional blanks lines can be inserted to enhance readability (ie. between printf and return). The closing brace } in this example is aligned beneath the type declaration (int) for the main function, to clearly denote the end of the function block.

  7. Write a C program, face0.c, that behaves as follows:
    ./face0
    ~ ~
    0 0
     o
     -
    
    
    Sample solution for face0.c
    #include <stdio.h>
    
    int main(void) {
    
        printf("~ ~\n");
        printf("0 0\n");
        printf(" o\n");
        printf(" -\n");
    
        return 0;
    }
    
    
    How would you compile this program?
    dcc -o face face.c
    
    How could we modify it to make a program, face1.c, look like this instead?
    ./face1
    ~ ~
    0 0
     o
    \_/
    
    
    Sample solution for face1.c
    #include <stdio.h>
    
    int main(void) {
    
        printf("~   ~\n");
        printf("0   0\n");
        printf("  o\n");
        printf(" \\_/\n");
    
        return 0;
    }