cs-2301, system programming for non-majors
DESCRIPTION
CS-2301, System Programming for Non-majors. Hugh C. Lauer Adjunct Professor (Slides include materials from The C Programming Language , 2 nd ed., by Kernighan and Ritchie and from C: How to Program , 5 th ed., by Deitel and Deitel). Course Objectives. C language programming - PowerPoint PPT PresentationTRANSCRIPT
IntroductionCS-2301 B-term 2008 1
CS-2301, System Programming forNon-majors
Hugh C. LauerAdjunct Professor
(Slides include materials from The C Programming Language, 2nd ed., by Kernighan and Ritchie and from C: How to Program, 5th ed., by Deitel and Deitel)
IntroductionCS-2301 B-term 2008 2
Course Objectives
• C language programming• Designing, implementing, debugging, etc.
• How the hardware executes 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”
IntroductionCS-2301 B-term 2008 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
IntroductionCS-2301 B-term 2008 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 don’t have support for “high-level” languages
• Operating systems, real-time systems, drivers
IntroductionCS-2301 B-term 2008 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
• Better alternatives available for technical applications
• Verilog, System C – semiconductor design• Matlab, SimuLink – physical modeling• LabView – instrumentation and control• Excel – accounting and statistics• SQL – billing and transactions• …
IntroductionCS-2301 B-term 2008 6
This Course
• Mondays & Thursdays, 3:00–4:50 PM• Goddard 227
• Weekly Lab Sessions• B01 – Salisbury 123, Wednesdays 11:00–11:50 AM• B02 – Higgins 230, Wednesdays 1:00–1:50 PM
• Three exams (one hour each)• November 13• December 1 or December 4• December 18
• Review session prior to exam on same day
IntroductionCS-2301 B-term 2008 7
Prerequisites
• CS-1101 or CS-1102• Or other “first” programming course
• Background survey
• Note: credit may not be earned for both CS-2301 and CS-2303
IntroductionCS-2301 B-term 2008 8
Logistics
• Course web site– http://www.cs.wpi.edu/~cs2301/b08
• Professor’s office Hours– Mondays and Thursdays, 1:30 PM, or by appointment– Fuller 137:– (508) 831-5493
• Contacts– <Professor’s last name> @ cs.wpi.edu
• Class e-mail lists– cs2301-all or cs2301-staff @ same domain– myWPI for announcements, class bulletin board
• Teaching assistants– Rabin Karki (TA) – Thangam V. Seenivasan (TA)– Brian Bates (SA)
IntroductionCS-2301 B-term 2008 9
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
IntroductionCS-2301 B-term 2008 10
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!
IntroductionCS-2301 B-term 2008 11
Ground Rule #1
• There are no “stupid” questions.
• It is a waste of your time and the class’s time to proceed when you don’t understand the basic terms.
• If you don’t understand it, someone else probably doesn’t it, either.
IntroductionCS-2301 B-term 2008 12
Ground Rule #2
• Help each other!
• Even though a project or assignment is specified as individual, ask your friends/colleagues about stuff you don’t 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)
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 don’t
• When speaking in class, please identify yourselves
IntroductionCS-2301 B-term 2008 13
IntroductionCS-2301 B-term 2008 14
WPI Academic Honesty Policy
• It is a violation of the WPI Academic Honesty Policy to submit someone else’s work as your own.
• It is not a violation of WPI’s Academic Honesty Policy to ask for help!
• Classmates, TAs, friends, mentors, …
• Explanations of things you don’t understand
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 M*A*S*H room and Tutor Center, Daniels Hall, 1st floor.
IntroductionCS-2301 B-term 2008 15
IntroductionCS-2301 B-term 2008 16
Instructor — Hugh C. LauerHalf-time 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– …
IntroductionCS-2301 B-term 2008 17
Systems 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)
IntroductionCS-2301 B-term 2008 18
Experience (continued)
• CTO, Chief Architect of VolumePro™ 1000• World’s 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
Ed Satterthwaite)
• 21 US patents issued• Computer architecture• Software reliability• Networks• Computer graphics & volume rendering
IntroductionCS-2301 B-term 2008 19
My Other Job
• System for detecting positions of surgical instruments relative to patients’ bodies
• Embedded, real-time system• Detect phase angles from transmitted microwaves
• Convert into positions and orientations of objects
• Programmed in LabView• A graphical, object-oriented, data-flow language
IntroductionCS-2301 B-term 2008 20
Questions?
IntroductionCS-2301 B-term 2008 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
IntroductionCS-2301 B-term 2008 22
Successors to C
• C++• Developed by Bjarne Stroustrup 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 support library for all kinds of stuff
IntroductionCS-2301 B-term 2008 23
Your First C Program
#include <stdio.h>
int main () {
printf(“Hello, World!\n”);
return 0;
}
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”• Specify an identifier and the kind of entity it refers to• Optionally, define associated memory or program
IntroductionCS-2301 B-term 2008 24
IntroductionCS-2301 B-term 2008 25
So where is printf declared?
#include <stdio.h>
int main () {
printf(“Hello, World!\n”);
return 0;
}
IntroductionCS-2301 B-term 2008 26
So where is printf declared?
#include <stdio.h>
int main () {
printf(“Hello, World!\n”);
return 0;
}
Answer: in this file!
IntroductionCS-2301 B-term 2008 27
Your First C Program
#include <stdio.h>
int main () {
printf(“Hello, World!\n”);
return 0;
}
• A header file• Contains definitions of
names, functions, data, of things declared elsewhere
• E.g., by the system
• Text of the header file is inserted by compiler into your program
• As if you wrote it yourself!
IntroductionCS-2301 B-term 2008 28
Your First C Program
#include <stdio.h>
int main () {
printf(“Hello, World!\n”);
return 0;
}
• A function declaration• Declares the name and
defines the body of your function
• May take arguments, returns an integer
• main is a special name to the system
• The place where a program “starts”
IntroductionCS-2301 B-term 2008 29
Your First C Program
#include <stdio.h>
int main () {
printf(“Hello, World!\n”);
return 0;
}
• Body of the function• Defines what the
function “does”• Sequence of
statements• Each does a step of the
function
• Enclosed in curly brackets
•{ }
IntroductionCS-2301 B-term 2008 30
Your First C Program
#include <stdio.h>
int main () {
printf(“Hello, World!\n”);
return 0;
}
• Call to another function • In this case, a function defined by the system
• Prints some data on standard output
IntroductionCS-2301 B-term 2008 31
Your First C Program
#include <stdio.h>
int main () {
printf(“Hello, World!\n”);
return 0;
}
• A constant string• Note the new-line character ‘\n’ at the end
IntroductionCS-2301 B-term 2008 32
Your First C Program
#include <stdio.h>
int main () {
printf(“Hello, World!\n”);
return 0;
}
• A return statement• return is a reserved word in C
• main should return zero if no error; non-zero if error
IntroductionCS-2301 B-term 2008 33
Your First C Program
#include <stdio.h>
int main () {
printf(“Hello, World!\n”);
return 0;
}
• Note that statements typically end with semicolons• So compiler can tell where end is
IntroductionCS-2301 B-term 2008 34
What happens to your program …
…after it is compiled, but before it can be run?
IntroductionCS-2301 B-term 2008 35
Example
#include <stdio.h>
int main () {
printf (“Hello, world\n”)
}
• Symbol defined in your program and used elsewhere
•main
• Symbol defined elsewhere and used by your program
•printf
IntroductionCS-2301 B-term 2008 36
Static Linking and LoadingPrintf.c
Printf.o
StaticLibrary
gcc
ar
Linker
Memory
HelloWorld.c
gcc
HelloWorld.o
Loader
a.out(or name of
your command)
IntroductionCS-2301 B-term 2008 37
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
• gcc –lrt HelloWorld.c• Searches library named rt.a for functions to link
IntroductionCS-2301 B-term 2008 38
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
IntroductionCS-2301 B-term 2008 39
Questions?
IntroductionCS-2301 B-term 2008 40
Short Break
Please fill out survey questionnaire