Title: CS-2301, System Programming for Non-Majors
1CS-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)
2CS-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
3Why?
- Computing and Programming a life skill for all
technical professionals - Thinking Computationally organizing your
engineering/scientific/technical thoughts to be
amenable to computational solutions
4Why 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
5Why 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
6This 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.
7This 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.
8Prerequisites
- 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.
9Logistics
- 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)
10Required Textbook
- The C Programming Language, 2nd edition, by Brian
Kernighan and Dennis Ritchie, Prentice Hall, 1988 - Bring to all classes and all lab sessions
11Textbook 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!
12Ground 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.
13Ground 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).
14Names 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
15WPI 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
16Additional 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.
17Instructor 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
18Systems 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)
19Experience (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
20Questions?
21The 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
22Successors 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
23Your First C Program
- include ltstdio.hgt
- int main (void)
- printf(?Hello, World!\n?)
- return 0
24Fundamental 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
25So where is printf declared?
- include ltstdio.hgt
- int main (void)
- printf(?Hello, World!\n?)
- return 0
26So where is printf declared?
- include ltstdio.hgt
- int main (void)
- printf(?Hello, World!\n?)
- return 0
27Your First C Program
- include ltstdio.hgt
- int main (void)
- printf(?Hello, World!\n?)
- return 0
28Your First C Program
- include ltstdio.hgt
- int main (void)
- printf(?Hello, World!\n?)
- return 0
29Your First C Program
- include ltstdio.hgt
- int main (void)
- printf(?Hello, World!\n?)
- return 0
30Your First C Program
- include ltstdio.hgt
- int main (void)
- printf(?Hello, World!\n?)
- return 0
31Your First C Program
- include ltstdio.hgt
- int main (void)
- printf(?Hello, World!\n?)
- return 0
32Your First C Program
- include ltstdio.hgt
- int main (void)
- printf(?Hello, World!\n?)
- return 0
33Your First C Program
- include ltstdio.hgt
- int main (void)
- printf(?Hello, World!\n?)
- return 0
34Questions?
- Write, compile, and execute this program in Lab
session tomorrow
35What happens to your program
- after it is compiled, but before it can be run?
36Example
- 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
37Static Linking and Loading
38Compiling 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)
39Compiling 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
40Questions?
41Short Break
- Please fill out survey questionnaire