Programming Fundamentals Using C


Lecture 1

Summary

Basic Info

Evaluation

Computers

Information

Compilation

Basic Info

About Myself

Brazilian, Canadian, and French

Father of two little honey badgers tasmanian devils beautiful children

Electrical Engineer by trade

+20 years of experience in Software Development

What we will Learn

Expressions

Logic

Loops

Arrays

Functions

Pointers

File IO

Algorithms

Delivery Method

Quizzes followed by Lectures followed by labs

Labs will be evaluated and feedback will be provided on a weekly basis

Assignments and tests will also be evaluated and feedback will be provided

Delivery Method

Lectures and labs will be in person

We will use:

    Blackboard for assignments and announcements

    Teams and Email for online help

    Course Website for info and slides

Tutoring, Accommodations, Plagiarism

Tutoring is available to all students

Accommodation forms must be presented at the beginning of the course

Need help? Ask me!

Evaluation

Evaluation

10 quizzes worth 1.2% each

8 workshops worth 3% each

1 midterm worth 15%

1 project worth 24%

1 final exam worth 25%

Evaluation

Late submission?

20%/day penalty

Including weekends (insert evil laughter)

Quizzes

Cover theory

Done prior to lectures

Blackboard tests

Time limited (short) and only one submission

Random order of questions

Workshops

Cover practice

Coding exercises

Multiple submissions allowed

Test

Cover both theory and practice

Time limited (short) theoretical component

More complex coding exercise

Project

Students will be given a practical task to be completed

Focus on the practical (coding aspect)

Much longer than a regular workshop

Final Exam

Pen and Paper

Closed Book

Focus on the understanding of theory

There will be questions on understanding excerpts of code

Computers

How Computers Work

Computers make use of both hardware and software

Smartphones and tablets are also computers!

Multiple types of input

Multiple types of output

Multiple types of memory (for storing information)

Computer Parts

error
source

Von Neumann Architecture

Modern computers store both data and instructions in memory

All processing happens at the CPU

Long term storage: Hard Disk (SSD or HDD)

Short term storage: RAM

Operating System

Windows, Android, iOS, and Linux

Control access to memory and devices

Control access to CPU (multitasking)

Information

Bits, Bytes, and Addresses

All information, instructions and data, get stored as zeros and ones

These are called bits

Bits are grouped in blocks of eight, called bytes

Each byte of RAM memory has its own address

Binary, Decimal, and Hex

Using binary, 32 or 64 digits would be required to represent each RAM address

Hexadecimal is frequently used as a shorthand

Each hex symbol represents four bits

0x indicates a hex number: 0x03AD9C21 (32 bits)

Compilation

Γειά σου Κόσμε!

Evolution of Programming

As seen, computers natively speak binary

Early computers were programmed via punch cards

Assembly languages were developed to simplify the coding process

Procedural languages like C evolved to make writing code simpler and more portable

Source Code

A C source code is simply a text file

To become an application, it must be compiled

Compilation is a process that turns source code into machine code

Hello World

// Basic Hello World program
#include <stdio.h>

int main() {
    printf("Hello World\n");

    return 0;
}
source code

Visual Studio

Multiple integrated development environments, IDEs, facilitate the task of writing, compiling, and debugging source code

In this course, we will use Visual Studio

Suggested Reading

Computer architecture (required)

Hexadecimal (required)

Compilation