cs240: programming in c · languages and scripting languages, such as c++, java, python,...

38
CS240: Programming in C Lecture 1: Class overview. Cristina Nita-Rotaru Lecture 1/ Fall 2013 1

Upload: others

Post on 13-Jul-2020

20 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

CS240: Programming in C

Lecture 1: Class overview.

Cristina Nita-Rotaru Lecture 1/ Fall 2013 1

Page 2: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

WELCOME to CS240

Cristina Nita-Rotaru Lecture 1/ Fall 2013 2

Page 3: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

240 Team

l  Instructor: Cristina Nita-Rotaru l  Special GTA: Gregor l  GTAs: Derek, Luojie, Shuvra l  UTAs: Scott, Xiangyu, Anant, Yudong

Cristina Nita-Rotaru Lecture 1/ Fall 2013 3

Page 4: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Why learn C (1)

l  C is one of the foundations for CS: §  Contains/applies principles from programming

languages, computer architectures, operating systems, network communication, database, graphical user interface (GUI), graphics, image processing, parallel processing, multi-threads, real-time systems, device drivers, data acquisition, algorithms, numerical analysis, and computer game.

Cristina Nita-Rotaru Lecture 1/ Fall 2013 4

Page 5: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

What does this buy you?

l  Understanding: understand better the interaction between machine and software: §  “…teaches individuals how computers really

work” §  “…built a foundation you’ll be thankful for

every 300+ level course ”

Cristina Nita-Rotaru Lecture 1/ Fall 2013 5

Page 6: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Why learn C (2)

l  C is the most commonly used programming language in industry. §  Next two popular are Java and C++ §  Language of systems programming: low-level

control over the OS, networking, crypto operations, email, games, embedded systems have higher performance when written in C

http://www.langpop.com

Cristina Nita-Rotaru Lecture 1/ Fall 2013 6

Page 7: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

What does this buy you?

l  Helps you be as prepared as possible for a job: §  Most of the employers want

candidates to know multiple languages §  Will prepare you better for a job

interview §  Gives you more opportunities within a

company

Cristina Nita-Rotaru Lecture 1/ Fall 2013 7

Page 8: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Why learn C (3)

l  C is the base for almost all popular programming languages.

l  Because of the performance and portability of C, almost all popular cross-platform programming languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and functions heavily from C.

l  Almost all languages can interface with C and C++ to take advantage of a large volume of existing C/C++ libraries. Many of their toolkits, modules or packages are written using C or C++.

Cristina Nita-Rotaru Lecture 1/ Fall 2013 8

Page 9: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

What does this buy you?

l  It will help you learn quickly other languages

l  It will allow you to interface with many other languages

Cristina Nita-Rotaru Lecture 1/ Fall 2013 9

Page 10: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

A word of caution …

" With great power, comes great responsibility”

l  C gives the user greater power than other languages §  Fine-grain control over resources §  Explore the interaction between software and

hardware

l  C is less forgiven with user’s mistakes

Cristina Nita-Rotaru Lecture 1/ Fall 2013 10

Page 11: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Course information

l  Meetings §  Tu Th 9:30-10:20pm Armstrong 1010

l  Professor contact info: §  Office: LWSN 2142J §  Email: [email protected] §  In person office hours: by appointment §  All emails should have cs240 in Subject

l  TA: §  Piazza

l  Class webpage http://www.cerias.purdue.edu/~crisn/courses/cs240_Fall_2013 l  Communication via piazza

Cristina Nita-Rotaru Lecture 1/ Fall 2013 11

Page 12: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Course outline

l  Tentative schedule is available on the class website.

l  Lists the plan for lectures, labs, exams, and projects.

l  Everything happens in class: lectures, reviews for exams, solving the exams.

l  All communication happens on piazza: all the notifications, advice posting of labs/projects happens on piazza.

Cristina Nita-Rotaru Lecture 1/ Fall 2013 12

Page 13: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Grading policy

l  Labs 10% l  Projects 40% l  Midterm 1 10% l  Midterm 2 10% l  Final 20% l  Class participation 10%

Cristina Nita-Rotaru Lecture 1/ Fall 2013 13

Page 14: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Labs and Projects

l  Learning how to program is achieved by PROGRAMMING (i.e. DOING the LABS and the PROJECTS)

l  THERE IS NO SUBSTITUTE FOR YOUR WORK §  YOU CAN MISS SUBMITTING 1 LAB §  MISSING MORE THAN 1 LAB will result in

failing the class. §  YOU HAVE TO SUBMIT ALL PROJECTS,

missing to submit one or more projects will result in failing the class

Cristina Nita-Rotaru Lecture 1/ Fall 2013 14

Page 15: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Environment

l  Linux l  gcc l  gdb l  make l  vim/emacs, your favorite editor l  VMware image

Cristina Nita-Rotaru Lecture 1/ Fall 2013 15

Page 16: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Due dates

l  Both labs and projects are assigned on Tuesdays, posted on piazza after class

l  Both labs and projects are due on Mondays at 10 PM

l  Labs, 1 week, project 2-3 weeks l  Individual work, no teams

Cristina Nita-Rotaru Lecture 1/ Fall 2013 16

Page 17: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Put your name on Labs and Projects

l  NAME and USER NAME

/************************************/ /* CS240 Fall 2013 Project 1 */ /* John Doe */ /* john_doe_27 */ /* This project counts till 10. */ /************************************/

Cristina Nita-Rotaru Lecture 1/ Fall 2013 17

Page 18: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Autograder

l  You will receive a unique id that will allow you to test and submit the code

l  More information will be provided in labs l  Do not submit in the last moment, you

can submit many times before deadline we consider the latest copy

Cristina Nita-Rotaru Lecture 1/ Fall 2013 18

Page 19: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Coding style

l  Labs and projects will be manually inspected

l  You will receive a guide with some basic good coding habits we will check

l  It is 20% of the grading of each project

Cristina Nita-Rotaru Lecture 1/ Fall 2013 19

Page 20: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Exams

l  Closed books, closed notes l  There are no makeups l  Two midterms and 1 final exam l  We will solve solutions in class

Cristina Nita-Rotaru Lecture 1/ Fall 2013 20

Page 21: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Regrading l  YOU HAVE 1 WEEK to ASK for

REGRADING of a lab, project or midterm

l  Send mail to the course staff mail alias (admin240f13@cs) with a precise description of your grading request, and get a ticket

l  Midterm/Final: handled by the Instructor l  Project/labs handled by TAs (cc me on

all communication with TA)

Cristina Nita-Rotaru Lecture 1/ Fall 2013 21

Page 22: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Attendance

l  CLASS AND LABS attendance REQUIRED !!!

l  Attendance taken in labs l  Slides will be made available online

before lecture l  YOU ARE STRONGLY

RECCOMENDED TO TAKE NOTES l  CODE ALL THE EXAMPLES AND

SOLVE THE PRACTICE EXERCISES

Cristina Nita-Rotaru Lecture 1/ Fall 2013 22

Page 23: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Reference material

l  The C Programming Language, Brian W. Kerninghan and Dennis M. Ritchie, 2nd Edition

l  Lecture slides posted online

Cristina Nita-Rotaru Lecture 1/ Fall 2013 23

Page 24: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Academy integrity

l  Class policy http://homes.cerias.purdue.edu/~spaf/cpolicy.html

l  Never have a copy of someone else's program in your possession and never give your program to someone else.

l  NO CHEATHING WILL BE TOLERATED.

ANY CHEATING WILL AUTOMATICALLY RESULT in F grade

Cristina Nita-Rotaru Lecture 1/ Fall 2013 24

Page 25: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Weather/Emergency

l  In the event of a major campus emergency, course requirements, deadlines and grading percentages are subject to changes that may be necessitated by a revised semester calendar or other circumstances beyond the instructor’s control.

l  Please read: http://www.itap.purdue.edu/tlt/faculty/QuickRefGuide.pdf

Cristina Nita-Rotaru Lecture 1/ Fall 2013 25

Page 26: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

How to study

l  Read the book, reference material, slides, man pages

l  Code each example from class, don’t just read it, code it

l  Do the labs and projects l  Do the practice exercises from lectures l  Start small, then add functionality l  Make mistakes and observe output l  Make sure you always understand why it did

not work and why the solution works

Cristina Nita-Rotaru Lecture 1/ Fall 2013 26

Page 27: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

How to ask on Piazza

l  Read the book, slides, notes l  Describe the problem clearly, using the

right terms l  Add code in attached files l  Add output from compiler l  Add any other relevant information l  All the info has to be from running the

program in the VM used for the class or the machine used in the lab

Cristina Nita-Rotaru Lecture 1/ Fall 2013 27

Page 28: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

One last word …

l  No meetings will be accepted with the TA or instructor the day projects or labs are due, or the day of exam

l  Start early l  Plan carefully l  Submit your code often l  Don’t post solutions on piazza l  Don’t cheat

Cristina Nita-Rotaru Lecture 1/ Fall 2013 28

Page 29: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

PIAZZA ACCOUNTS

l  If you have not received a piazza notification

l  Email: [email protected] l  Also cc me [email protected]

Cristina Nita-Rotaru Lecture 1/ Fall 2013 29

Page 30: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

QUESTIONS?

Cristina Nita-Rotaru Lecture 1/ Fall 2013 30

Page 31: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Terminology

l  What’s a computer? l  What is hardware/software l  What’s an algorithm ? l  What’s a program? l  What’s an operating system? l  What’s a programming language ?

§  Machine language §  Assembly language §  High-level language

Cristina Nita-Rotaru Lecture 1/ Fall 2013 31

Page 32: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Computer architecture

Cristina Nita-Rotaru Lecture 1/ Fall 2013 32

Memory

CPU

Storage

Mouse

Keyboard

Network

Display

Page 33: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Cristina Nita-Rotaru Lecture 1/ Fall 2013 33

HARDWARE

OPERATING SYSTEM

APPLICATIONS

Page 34: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

OS Job

l  Management of the processes and their access to resources §  Memory §  CPU access §  I/O §  Network §  Other devices

l  Interaction with the user §  Graphic interface §  Other devices

Cristina Nita-Rotaru Lecture 1/ Fall 2013 34

Page 35: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Algorithm/Program

l  Algorithm: procedure for solving a problem in finite steps

l  Program: set of instructions to the CPU, stored in memory, read and executed by the CPU

Cristina Nita-Rotaru Lecture 1/ Fall 2013 35

Page 36: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Machine and assembly language

l  Machine language : binary information, specific to a CPU §  How a CPU interprets data: e.g. how are memory

addresses represented, how is an instruction coded, etc

§  This is the binary or executable code l  Assembly language: easier to write for

people, using symbols, requires an assembler §  Still need to think in terms of low level CPU steps §  Still hardware-specific

Cristina Nita-Rotaru Lecture 1/ Fall 2013 36

Page 37: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

High-level language

l  Closer to human language l  Needs a compiler to convert it to machine

language l  One can write programs in many high-level

languages for the same CPU l  More portable l  Examples: C, C++, C#, Objective C, Java,

SmallTalk, also Cobol, Basic, Pascal …

Cristina Nita-Rotaru Lecture 1/ Fall 2013 37

Page 38: CS240: Programming in C · languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and Bash, are implemented in C and borrowed syntaxes and

Readings for next lecture

K&R Chapter 1: A tutorial introduction

Cristina Nita-Rotaru Lecture 1/ Fall 2013 38