## Introduction to

# Computing

R. Gowers,

J. Reizenstein,

Y. Lifanov,

J. Mascie-Taylor,

Q. Caudron.

# Welcome

# WIFI

- hotspot-secure: uXXXXXXX and password
- eduroam: uXXXXXXX@warwick.ac.uk and password (Also works at other UK universities.)

(No CA cert required).

# Find me

Google: Warwick Reizenstein

# Purpose

- Cover the basics of writing computer code
- Show how to use SCRTP's cluster of workstations
- Point out useful resources

# Motivation

Extra options

- In life
- In academia
- In industry

# Scope

We will cover the basics of:

- C++ Programming
- Julia Programming
- Usage of CSC SCRTP

# SCRTP account

Let's apply now

# Tomorrow

You will need Julia

# On Thursday

You need a C++ compiler/IDE

- Windows: Visual studio or Code::Blocks (with MinGW)
- Mac: Xcode
- For Linux, something like:

    sudo apt-get install g++

Some of these and other things I may have already downloaded.

# On Thursday

You will need:

1. A CSC account
2. X2Go, Putty or ssh
3. FileZilla or scp

# Note

- Links to downloads are in these slides
- The slides are online
- Be careful with SourceForge installers
- I'm around all day for help

# Background

Overview of Computing

# Program

- Is a long sequence of 1s and 0s
- Is a sequence of instructions to the CPU
- Is often written as hex byte codes, e.g.

    0000 0001 1101 0000     ----    01 d0

# CPU

- Is a big electronic circuit with transistors
- Transistors form logic circuits
- Logic circuits manipulate binary sequences

# Code

If you can encode your problem as a sequence of binary operations and represent this as a binary sequence, then you can use a CPU to solve the problem.

# Language

- Is a set of tokens, syntax and semantics
- Maps onto the set of CPU instructions
- Is hopefully more intuitive than byte codes
- E.g. Assembly:

    01 d0    ----    add   %edx,%eax

# Source Code

- Is a set of text files
- Must correctly use the given language

    //very simple C program
    main() { //main function definition
      int a = 5, b = 6, c; //some integers
      c = a + b; //add
    }

# Compiler

- Is a computer program
- Takes in source code
- Translates source code into machine code
- Produces a binary - executable file
- E.g. GCC/G++

# Interpreter

- Is a computer program
- Translates source code into machine code
- Executes source code commands line by line
- E.g. MatLab, R, python

- Julia is a bit of both. Basically compiled but no need to worry.

# Summary

# more setup

- Linux shell cheat sheet
- Join Warwick Complexity on Facebook.
- Printing from Ubuntu: To use the printer (N1521) which is in D1.06: Printers, Add, Enter URI (on board), Make: HP, Model Color LaserJet Enterprise M750, then follow defaults
- Printing from Windows, details here.
- If you want to import your Warwick email into gmail, you might 1) Forward your mail from your microsoft email - specifically here. 2) do
  Settings>Accounts ...>Check email from other accounts>Add a POP3.., use `maxxxx@live.warwick.ac.uk` as both address and username, with reply-to like `f.[m.]surname@warwick.ac.uk`, select "Treat as an alias", TLS, port 587, server `outlook-emeawest.office365.com`.
- register other software e.g. MatLab