CS-2301, System Programming for Non-Majors - PowerPoint PPT Presentation

About This Presentation
Title:

CS-2301, System Programming for Non-Majors

Description:

CS-2301, System Programming for Non-Majors CS-2301, System Programming for Non-Majors (Slides include materials from The C Programming Language, 2nd edition, by ... – PowerPoint PPT presentation

Number of Views:27
Avg rating:3.0/5.0
Slides: 42
Provided by: webCsWpi9
Learn more at: http://web.cs.wpi.edu
Category:

less

Transcript and Presenter's Notes

Title: CS-2301, System Programming for Non-Majors


1
CS-2301, System Programming for Non-Majors
  • CS-2301, System Programmingfor Non-Majors
  • (Slides include materials from The C
    Programming Language, 2nd edition, by Kernighan
    and Ritchie and from C How to Program, 5th and
    6th editions, by Deitel and Deitel)

2
CS-2301 Course Objectives
  • C language programming
  • Designing, implementing, debugging, etc.
  • Basic understanding of how computers execute C
    programs
  • and other kinds of programs
  • Preparation for computational challenges of
    engineering, scientific, and other professions
  • Preparation for upper-level courses in computing
  • Thinking computationally

3
Why?
  • Computing and Programming a life skill for all
    technical professionals
  • Thinking Computationally organizing your
    engineering/scientific/technical thoughts to be
    amenable to computational solutions

4
Why C?
  • Because we have to!
  • Many situations outside of CS where it is only
    language or system available
  • Small, embedded systems, instrumentation, etc.
  • Many low-level situations that dont have
    support for high-level languages
  • Operating systems, real-time systems, drivers

5
Why not C?
  • C is very low-level
  • Data structures must be programmed by hand
  • Operations must be done out in long hand
  • No support for object oriented design
  • Marginal support for higher-level thought
    processes
  • Much, much harder to use than higher level
    languages/systems
  • Better alternatives available for technical
    applications
  • Verilog, VHDL, System C semiconductor design
  • Matlab, SimuLink physical modeling
  • LabView instrumentation and control
  • Excel accounting and statistics
  • SQL billing and transactions

6
This Course
  • Lectures
  • C programming language, syntax, semantics, etc.
  • Common data structures that technical
    professionals are likely to need or encounter in
    C
  • Programming Assignments
  • Write programs to exercise various language
    constructs and data structures
  • Mandatory for passing this course
  • Lab Sessions
  • How to use the system, tools, debuggers, etc.
  • Practical help from TAs, etc.

7
This Course (continued)
  • Tuesdays Fridays, 200350 PM
  • Higgins Labs 116
  • Weekly Lab Sessions
  • B01 Higgins Labs 230, Wednesdays 200-250 PM
  • B02 Higgins Labs 230, Wednesdays 300-350 PM
  • Three exams (one hour each)
  • November 13
  • December 1
  • December 15
  • Review session prior to exam on same day

Closed book, one 8½-by-11 sheet of prepared
notes, no calculators or electronics
Note Exams are deliberately designed to be
difficult. Median grade about 50 graded on a
curve e.g., median 10 ? B. Include writing
program fragments.
8
Prerequisites
  • CS-1101 or CS-1102
  • Or other first programming course
  • Or programming job, or other experience
  • Background survey
  • Note credit may not be earned for both CS-2301
    and CS-2303
  • Note
  • If you have never programmed a computer before,
  • And if you are taking an overload this term,
  • Chances are that you will not do well in this
    course.

9
Logistics
  • Course web site
  • http//www.cs.wpi.edu/cs2301/b09
  • Professors office Hours
  • Tuesdays and Fridays, 100 PM 150 PM, or by
    appointment(additional hours TBD)
  • Fuller 144 (508) 831-5493
  • Contacts
  • ltProfessors last namegt _at_ cs.wpi.edu
  • Class e-mail lists
  • cs2301-all or cs2301-staff _at_ same domain
  • Teaching assistants
  • Feng Li (TA)
  • Medhabi Ray (TA)
  • Andrew Keating (SA)

10
Required Textbook
  • The C Programming Language, 2nd edition, by Brian
    Kernighan and Dennis Ritchie, Prentice Hall, 1988
  • Bring to all classes and all lab sessions

11
Textbook Outline
  • Chapter 1 a tutorial aimed at people who already
    know how to program
  • Chapters 2-8 description of C language
  • Slightly different order from Chapter 1
  • Appendix A the C language reference
  • Official definition of language is here!
  • Appendix B the standard libraries
  • You will use these a lot!

12
Ground Rule 1
  • There are no stupid questions.
  • It is a waste of your time and the classs time
    to proceed when you dont understand the basic
    terms.
  • If you dont understand it, someone else probably
    doesnt it, either.

13
Ground Rule 2
  • Help each other!
  • Even when a project or assignment is specified as
    individual, ask your friends or classmates about
    stuff you dont understand.
  • It is a waste of your time try to figure out some
    obscure detail on your own when there are lots of
    resources around.
  • When you have the answer, write it in your own
    words (or own coding style).

14
Names and Faces
  • It is in your own interest that I know who you
    are.
  • Students who speak up in class usually get more
    favorable grades than those who dont
  • When speaking in class, please identify yourselves

15
WPI Academic Honesty Policy
  • It is a violation of the WPI Academic Honesty
    Policy to submit someone elses work as your own.
  • It is not a violation of WPIs Academic Honesty
    Policy to ask for help!
  • Classmates, TAs, friends, mentors,
  • Explanations of things you dont understand

16
Additional Help
  • Academic Resource Center has Tutors available to
    assist in CS 2301.
  • The schedule is posted and copies are available
    on the door of the MASH room and Tutor Center,
    Daniels Hall, 1st floor.

17
Instructor Hugh C. LauerAdjunct Professor
  • Ph. D. Carnegie-Mellon, 1972-73
  • Dissertation Correctness in Operating Systems
  • Lecturer University of Newcastle upon Tyne, UK
  • Approximately 30 years in industry in USA
  • Research topics
  • Operating Systems
  • Proofs of Correctness
  • Computer Architecture
  • Networks and Distributed Computing
  • Real-time networking
  • 3D Volume Rendering
  • Surgical Simulation and Navigation

18
Systems and Programming Experience
  • IBM Corporation
  • University of Newcastle
  • Systems Development Corporation
  • Xerox Corporation (Palo Alto)
  • Software Arts, Inc.
  • Apollo Computer
  • Eastman Kodak Company
  • Mitsubishi Electric Research Labs (MERL)
  • Real-Time Visualization
  • Founded and spun out from MERL
  • Acquired by TeraRecon, Inc.
  • SensAble Technologies, Inc.
  • Dimensions Imaging, Inc. (new start-up)

19
Experience (continued)
  • CTO, Chief Architect of VolumePro 1000
  • Worlds first interactive 3D rendering engine for
    CT, MRI, seismic scans for PC-class computers
  • 7.5-million gate, high-performance ASIC
  • 109 illuminated graphical samples per second
  • Two seminal contributions to computer science
  • Duality hypothesis for operating systems (w/Roger
    Needham)
  • First realization of opaque types in type-safe
    languages (with Edwin Satterthwaite)
  • 21 US patents issued
  • Computer architecture
  • Software reliability
  • Networks
  • Computer graphics volume rendering

20
Questions?
21
The C Language
  • First created to develop Unix late 1960s
  • Kernighan Ritchie, 1st edition 1978
  • ANSI C 1988
  • Kernighan Ritchie, 2nd edition, 1988
  • Implemented by nearly all C compilers
  • C95, C99
  • Minor additions (to be noted as we get to them)
  • Most major C compilers

22
Successors to C
  • C
  • Developed by Bjarne Stroustrup and team at Bell
    Labs
  • Major extension of C to support object-oriented
    programming
  • Attempted to preserve syntax and structure of C
  • Java
  • Rewrite of C at Sun Microsystems
  • Machine independence, portability
  • Ability to embed in web pages
  • Huge libraries of packages for all kinds of stuff

23
Your First C Program
  • include ltstdio.hgt
  • int main (void)
  • printf(?Hello, World!\n?)
  • return 0

24
Fundamental Rule in C
  • Every identifier must be declared before it can
    be used in a program
  • Definition identifier
  • A sequence of letters, digits, and _
  • Must begin with a letter or _
  • Case is significant
  • Upper and lower case letters are different
  • Must not be a reserved word see p. 192
  • Definition declare
  • Introduce an identifier and the kind of entity it
    refers to
  • Optionally, define associated memory or program

25
So where is printf declared?
  • include ltstdio.hgt
  • int main (void)
  • printf(?Hello, World!\n?)
  • return 0

26
So where is printf declared?
  • include ltstdio.hgt
  • int main (void)
  • printf(?Hello, World!\n?)
  • return 0

27
Your First C Program
  • include ltstdio.hgt
  • int main (void)
  • printf(?Hello, World!\n?)
  • return 0

28
Your First C Program
  • include ltstdio.hgt
  • int main (void)
  • printf(?Hello, World!\n?)
  • return 0

29
Your First C Program
  • include ltstdio.hgt
  • int main (void)
  • printf(?Hello, World!\n?)
  • return 0

30
Your First C Program
  • include ltstdio.hgt
  • int main (void)
  • printf(?Hello, World!\n?)
  • return 0

31
Your First C Program
  • include ltstdio.hgt
  • int main (void)
  • printf(?Hello, World!\n?)
  • return 0

32
Your First C Program
  • include ltstdio.hgt
  • int main (void)
  • printf(?Hello, World!\n?)
  • return 0

33
Your First C Program
  • include ltstdio.hgt
  • int main (void)
  • printf(?Hello, World!\n?)
  • return 0

34
Questions?
  • Write, compile, and execute this program in Lab
    session tomorrow

35
What happens to your program
  • after it is compiled, but before it can be run?

36
Example
  • include ltstdio.hgt
  • int main (void)
  • printf (?Hello,? ? world\n?)
  • return 0
  • Symbol defined in your program and used elsewhere
  • main
  • Symbol defined elsewhere and used by your program
  • printf

37
Static Linking and Loading
38
Compiling Your Program
  • gcc HelloWorld.c
  • Compiles the program in HelloWorld.c, links with
    any standard libraries, puts executable in a.out
  • You should find HelloWorld.o in your directory
  • gcc o hello_world HelloWorld.c
  • Same as above, but names the executable file
    hello_world instead of a.out
  • gcc lrt HelloWorld.c
  • Searches library named rt.a for functions to
    link(in addition to standard libraries)

39
Compiling Your Program (continued)
  • gcc foo.c bar.c help.c
  • Compiles the programs foo.c, bar.c, and help.c,
    links with standard libraries, executable in
    a.out
  • You should find foo.o, bar.o, and help.o in your
    directory
  • gcc o Lab2 foo.c bar.c help.c
  • Same as above, but names the executable file Lab2
  • gcc c foo.c bar.c help.c
  • Compiles foo.c, bar.c, and help.c to foo.o,
    bar.o, and help.o but does not link together

40
Questions?
41
Short Break
  • Please fill out survey questionnaire
Write a Comment
User Comments (0)
About PowerShow.com