<< 1. Introduction | 2. Setting up what you need | 3. Programming Basics >>
In this chapter, you will set up what you need to start learning Computer Science and programming: you need to have a computer and an operating system installed; you need to know how to deal with files, directories and the command line; then you need to choose and install a programming language. Feel free to skip or just skim through the text of topics you are already familiar with. ◻
This book already assumes some familiarity with using a computer. ◻
If you are working through this book as part of an Academic programme, a programming environment may have been already set up for you in the laboratory of your institution. Check with you Lecturer, Teacher or Teaching assistant. You can nevertheless use this chapter to set up an environment on your personal computer. ◻
You are expected to be at a computer while reading this book. Ideally you should also have internet access so you can check your exercise solutions in the CScx Online Judge. ◻
Now, on what computer you should be working?
Ideally you should be using a personal computer: one with a keyboard and a screen. This could be a desktop computer or a laptop. As programming is typing intensive a physical keyboard can make a difference.
(In North America, “Personal Computer” or “PC” is often used in contrast with Apple “Mac” computers. In reality Macs can be classified as personal computers as they are computers designed for individual use. Feel free to use a Mac if you like.)
You do not need something expensive or even brand new. At least at first, programming is not a very demanding job in terms of computer processing power. If you are looking for something cheap, use an old computer or attach a monitor, keyboard and mouse to a Raspberry Pi.
Less ideally, you could follow this book on a tablet computer with a physical keyboard attachment. In the worst case, you could use a smartphone but only as a last resort solution. It can be tricky to setup a development environment on tablets and mobile phones as this is unusual. Again, use an actual desktop or laptop computer — even an old device will do. ◻
An Operating System is the program that starts, or boots, after you turn on your computer. You can follow this book on virtually any operating system so long as it supports a programming environment. ◻
Your choice of operating system may have already been “made” by the computer you have available as in general computers are sold with pre-installed operating systems.
If you do not already have an operating system or are looking for something free and user-friendly: you can use Ubuntu Linux or Linux Mint. You can download, use and redistribute them for free. The installation instructions are on their website. ◻
Later in this chapter, there will be instructions on how to set up a programming environment on Linux and Microsoft Windows. ◻
Exercise. Play around with your operating system a bit if you have not done so already. Make sure you know how to open a few different applications such as: a plain text editor, a rich text editor, a drawing program, a calculator, etc. ◻
We can use files to store information on a computer. Files can contain text, music, images, programs, etc. Each file has a name and contents. By convention a file name is usually followed with an extension which indicates the file type:
shopping-list.txt
is a plain text file;Bourrée in E minor.mp3
is a file with music encoded in its contents;Picture.jpg
is an image file.◻
We can use directories to organize files in a computer. Directories do not have extensions but they can contain directories within themselves. Directories are represented as folders graphically. ◻
The figure above shows a Graphical User Interface (GUI) view of a directory with three files and one subdirectory using Thunar on Linux. Be aware that some systems hide extensions by default on GUIs. (The acronym GUI is pronounced “gooey”.) ◻
Exercise. Create an plain text file on your system. You can do this in several ways:
gedit
on Linux
or notepad
on Windows;name.txt
as the file name
then opening the file by double-clicking or touching it
— this may vary a bit depending on the operating system your are using. ◻Besides GUIs we can also interact with systems through the command line or shell. This is important as we will be writing command line programs in a couple of chapters.
The command line is a textual interface. You type in a command and below this command you see a textual reply. ◻
On Ubuntu Linux you can access the shell by opening the Terminal application.
In general, you can access the shell by opening any terminal emulator program:
xterm
, urxvt
, gnome-terminal
, xfce4-terminal
, konsole
.
One of these is probably pre-installed in your Linux system.
◻
After opening the shell, you can execute commands and run programs. The following table shows a few commands and their meaning.
Shell command | meaning |
---|---|
ls |
list the contents of the working directory |
pwd |
print the working directory |
cd directory |
change the working directory to <dir> |
cd .. |
go up a directory in the directory tree |
cat file.txt |
display the contents of <file> in the screen |
The above commands also work on Mac OS. ◻
Below is an example session on the shell.
Lines beginning with a dollar sign ($
) are followed by user input.
$ pwd
/home/user
$ ls
cscx music pictures log txt
$ cd cscx
$ pwd
/home/user/cscx
$ ls
subdirectory picture.jpg 'Bourrée in E minor.mp3' shopping-list.txt
$ cat shopping-list.txt
milk
eggs
flour
◻
Exercise. Try to replicate something similar to the above on the Shell.
Use ls
to discover files and directories and cd
to change directory.
Try to locate a text file and display it on the screen.
You should only need to type what comes after $
.
◻
On Microsoft Windows you can open the Windows command line by:
Windows+R
then typing cmd
and pressing enter;After opening the command prompt, you can execute commands and run programs. The following table shows a few commands and their meaning.
Windows command | meaning |
---|---|
dir |
list the contents of the current directory |
cd |
shows the current directory |
cd directory |
change the current directory to directory |
cd .. |
go up a directory in the directory tree |
C: |
change to the main disk drive |
D: |
change to the secondary disk drive |
type file.txt |
show contents of file.txt in the screen |
Below is an example session on the Windows command line.
Lines beginning with >
are followed by user input.
The other lines are the output by the system:
> dir
Directory of C:\users\user
31/12/1970 11:59 PM <DIR> cscx
1/1/1970 00:00 AM <DIR> Desktop
1/1/1970 00:00 AM <DIR> Downloads
> cd cscx
> dir
Directory of C:\users\user\cscx
28/07/1750 11:59 PM Bourrée in E minor.mp3
31/12/1970 11:59 PM picture.jpg
31/12/1970 11:59 PM shopping-list.txt
31/12/1970 11:59 PM <DIR> subdirectory
> type shopping-list.txt
milk
eggs
flour
◻
Exercise. Try to replicate something similar to the above on the Windows Command Line.
Use dir
to discover files and directories and cd
to change directory.
Try to locate a text file and display it on the screen.
You should only need to type what comes after >
.
◻
A programming language is the language in which we can explain a computer what do to. A computer program is written in a programming language. ◻
If you ask seasoned programmers, they likely will have strong and diverging opinions on which programming language should be the first that someone learns. That does not matter too much: whether you start with Python, C, Haskell or any other language, the skills you learn are transferable. Eventually learning several programming languages is more important than which language you start with. However, if you are a first time programmer, do not try to learn more than one programming language at once. First learn a language, be comfortable with it, then learn another. ◻
In this book, we take an unusual approach: the decision of which language to start with is left to the reader. This book offer three choices: Python, C and Haskell. This section talks a bit about each of them to help you decide.
language | C | Python | Haskell |
---|---|---|---|
runtime | compiled | interpreted | both |
object oriented | no | yes | no |
paradigm | imperative | imperative | functional |
level | low-level | high-level | high-level |
typing | static | dynamic | static |
The above table summarizes differences between C, Python and Haskell. Some of the terms used in the table are not defined until later in this book. ◻
Python is a high-level language that is interpreted and object oriented. Of the three choices offered in the book, it is the easiest to learn. Python is a popular choice as an introductory CS teaching language. If you are unsure, Python is not a bad choice. ◻
C is a low level language, it is closer to machine-readable code. In C one can exercise low level concepts unavailable in Python or Haskell such as pointers and manual memory allocation. C was very influential in its syntax. Many widely used languages, some of these very different from C, use a C-like syntax, such as: C++, C#, Java, JavaScript. ◻
Haskell is a functional and lazy high-level language. Haskell’s syntax helps one write mathematical functions quite elegantly. Of the three choices offered in the book, it is the most unusual as a first programming language. Haskell can be a bit harder to grasp at first but it can improve the way one thinks about programming. ◻
Similarities. C, Python and Haskell do have their similarities. They are general purpose programming languages, in other words, they were not designed to be restricted to a certain niche. They are also portable, the same program can be compiled to or interpreted in a variety of systems. ◻
Examples. Here is an example in each of the three languages.
The following Python function computes the GCD of two integers:
def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)
◻
The following C function computes the GCD of two integers:
int gcd(int a, int b)
{
if (b == 0)
return a;
else
return gcd(b, a % b)
}
◻
The following Haskell function computes the GCD of two integers:
gcd :: Int -> Int -> Int
gcd a 0 = a
gcd a b = gcd b (a `mod` b)
◻
Throughout the book, you will see boxes like these. You should read the one of your chosen language and skip the other two. ◻
Other languages. The examples in the book are in C, Python or Haskell, so, if this is your first time learning programming, stick to one of these three. However if you already know how to program, you can use this book to learn other languages: C++, C#, Java, JavaScript, Lua, Ruby, Racket and Scheme. All of these are supported by the CScx Online Judge. ◻
If you are using this book as part of an academic programme, your instructor may require you to use specific language or pick a language from a restricted set. ◻
To start programming, you need either a compiler or an interpreter. A compiler transforms human-readable code into machine-readable code producing an executable program. An interpreter executes human-readable code directly. ◻
In this section you will find information on how to install compilers or interpreters for C, Python and Haskell on Linux and Microsoft Windows. You do not need to install all of them, just the one you will be using. Please jump to the appropriate section with the instructions for your chosen language and system.
If you have difficulty doing this on your own, try to find someone with experience to help. Here is a hint: on Linux we install software using a package manager, on Windows we install software by downloading and running the installer from a website. ◻
To compile C programs on Linux you can use GCC, the GNU C Compiler. ◻
To test if GCC is installed, run the following on the command line:
gcc --version
If you get a version number along with copyright information,
GCC is already installed.
If you get instead “command not found”,
you will need to install GCC
– see the following paragraphs.
You will need root
privileges.
◻
Installing GCC on Debian or Ubuntu. On Debian and Ubuntu run the following on the command line to install GCC:
apt-get install gcc
Then use gcc --version
to check if the installation was successful.
◻
Installing GCC on Arch Linux. On Arch Linux, run the following on the command line to install GCC:
pacman -S gcc
◻
Installing GCC on Red Hat, CentOS or Fedora. On Red Hat and CentOS systems, run the following on the command line to install GCC:
yum -y install gcc
◻
To run Python programs on Linux, we need the official Python interpreter. Python version 3 is recommended.
To test if Python is installed, run the following on the command line:
python --version
To test if Python 3 is installed, run the following on the command line:
python3 --version
If you get a version number along with copyright information,
Python is already installed.
If you get instead “command not found”,
you will need to install Python
– see the following paragraphs.
You will need root
privileges.
◻
Installing Python on Debian or Ubuntu On Debian and Ubuntu run the following on the command line to install Python 3:
apt-get install python3
◻
Then use python --version
to check if the installation was successful.
Installing Python on Arch Linux On Arch Linux, run the following on the command line to install Python 3:
pacman -S python
◻
Installing Python on Red Hat, CentOS or Fedora. On Red Hat, CentOS or Fedora, run the following on the command line to install Python 3:
dnf install python3
◻
To compile Haskell on Linux you can use GHC, the Glasgow Haskell Compiler.
To test if GHC is installed, run the following on the command line:
ghc --version
If you get a version number along with copyright information,
GHC is already installed.
If you get instead “command not found”,
you will need to install GHC
– see the following paragraphs.
You will need root
privileges.
◻
Installing GHC on Debian or Ubuntu. On Debian and Ubuntu, run the following on the command line to install GHC:
apt-get install ghc
Then use ghc --version
to check if the installation was successful.
◻
Installing GHC on Arch Linux. On Arch Linux, run the following on the command line to install GHC:
pacman -S ghc
◻
Installing GHC on Red Hat, CentOS or Fedora. On Red Hat, CentOS or Fedora, run the following on the command line to install GHC:
dnf install ghc
◻
Besides a compiler, you also need a plain text editor.
The gedit text editor is a simple and popular choice
that comes pre-installed on Ubuntu:
search for “gedit” or “Text Editor” on the application menu
or simply execute gedit
on the terminal.
◻
In case gedit
is not installed,
do the following steps:
Installing gedit on Debian or Ubuntu. On Debian and Ubuntu run the following on the command line to install gedit:
apt-get install gedit
◻
Installing gedit on Arch Linux. On Arch Linux, run the following on the command line to install gedit:
pacman -S gedit
◻
Installing gedit on Red Hat, CentOS or Fedora. On Red Hat, CentOS or Fedora, run the following on the command line to install gedit:
dnf install gedit
◻
Other choices. Other popular choices of easy-to-use text editors are: kwrite and geany. Other popular choices of not-so-easy-to-use text editors are: vim and emacs. You can install these using a package manager. ◻
To compile C programs on Windows we can use the GCC compiler bundled with Code::Blocks or Visual Studio Community. This section provides instructions on how to intall Code::Blocks. ◻
You can download the Code::Blocks installer from the Code::Blocks website. First click on “Downloads” then on “Download the binary release”.
Download the “codeblocks-20.03mingw-setup.exe” installer. The website has several options, it is important to choose the one that comes with “MinGW” thus including the compiler.
Execute the installer and follow the install instructions. Select a “Full” installation when prompted.
If your installation is successful, you should be able to open Code::Blocks from the start menu. ◻
Code::Blocks is an integrated development environment. You can use it to write and compile programs. You can use the file menu or icons to create new programs and to open existing programs. You can build and run your programs using the “cog” and “play” icons or using the build menu option at the top which are active when a program is opened. ◻
Python for Windows can be freely downloaded from Python’s official website. Click on “Downloads” then on “Windows” to reach the “Python Releases for Windows” webpage. Python 3 is recommended.
From the “Stable Releases” section, download the latest “Windows x86-64 executable installer” for Python 3.
After downloading the installer, execute it and follow the automated installation steps. When prompted, make sure you check the box “Add Python 3 to PATH”, so you are able to run Python from the command line, then click “Install Now”.
By default, Python comes with IDLE, Python’s Integrated Development and Learning Environment. You can use it to write your Python programs in. You can find it on the Windows start menu.
Later when solving exercises from the book, you can run Python programs directly from IDLE using the “Run” menu item.
Check if your installation was successful
by opening IDLE
or by running python
from the command line:
> python --version
Python 3
◻
To compile Haskell programs on Windows, we can use the GHC compiler bundled with the Haskell Platform. ◻
To install Haskell on Windows, visit the Haskell Platform releases page. Download and execute the latest Haskell Platform Installer and follow the installation instructions. When prompted you can unmark “Stack” to make the installation go faster.
If your installation was successful,
you should be able to run ghc
from the command line:
> ghc --version
The Glorious Glasgow Haskell Compilation System, version 8.6
You will also need a text editor to write your programs in. You can use Notepad++ or Visual Studio Code. Both are available for free. ◻
<< 1. Introduction | 2. Setting up what you need | 3. Programming Basics >>
Copyright © 2020-2023 Rudy Matela
All rights reserved