Lecture 1
Course Introduction
• Course Mechanics
– Prerequisites
– Instructors
– Textbooks
– Course Components
– Assignments
– Policies
– Evaluation
• Course Overview
– Syllabus
– Languages & Translation
– Programming Environment
– Friendly/Fatherly Advice
• CS 1501/1311/1321 Introduction to Computing
– Pseudocode
– Scheme
– Intro to OO
– Equivalent
• CS 1502/1312/1322 Introduction to Object Oriented
Programming
– Java
– Intro to C
• Bill Leahy
– Email: bleahy@cc.gatech.edu (Don't duplicate)
– Office Hours: Tuesday/Thursday 4:30 - 6:00 and by appointment
• Jim Greenlee
– Email: jkg@cc.gatech.edu
– Office Hours: Tuesday/Thursday 9:30 - 11:00 and by appointment
• Languages and Translation
– Pearson Custom Publishing
Available from Engineer’s Bookstore
• Notes taken from
– Efficient C Programming
• Mark Allen Weiss
– Advanced Unix Programming
• Warren Gay
Note: There are two indexes
• Compiler Construction Principles and Practice by
Kenneth C. Louden
• PWS Publishing Company, 1997 (now a part of
Brooks/Cole) ISBN 0-534-93972-4
If this is not available don’t worry. We won’t use it for a while.
Optional Book
• lex & yacc (2nd Edition)
• Levine, et al
• O’Reilly & Associates
• Probably not worth buying just for this class - borrow it if you can
• Lecture: Tuesday, Thursday
– Jim Greenlee 8:05 - 9:25
– Bill Leahy 12:05 - 1:25
– Theory, big picture
– Questions always welcome
• Recitation: Per Oscar Schedule
– Contact time with TA's
– TA's review common mistakes
– Ungraded quiz
• Lab: Per Oscar Schedule STARTS THIS WEEK!!!
– Coding Questions
– Hands on
Oscar says next week but go to a lab this week!!!
Preferably your own.
• You are expected to attend lecture, recitation and lab
• Students scheduled for lecture have priority for seating
• Must attend scheduled recitation and lab unless prior arrangements have been made (see Administrative
Information document posted on-line)
• Courtesy
– No cell phones
– No beepers
– Be on time
– No whispering
– No alarms
• Newsgroups git.cc.class.cs2130.announce
git.cc.class.cs2130.questions git.cc.class.cs2130.homeworks
git.cc.class.cs2130.labs
• Useful Documentation Files (On Acme)
~cs2130/pub/docs
• Course Management Software (On Acme) workon cs2130 printdoc
• http://swiki.cc.gatech.edu:8080/cs2130
• Lots of stuff there from previous semesters
• This semester's stuff available "soon“
• Diary: akbar@cc
• Homework (Collaboration)
• Labs
• Project
• Tests (2 @ 15%)
• Final
• Total 100%
5%
20%
15%
30%
30%
• C Programming
• Language Translators & Interpreters: Introduction
• Language Translators & Interpreters: Advanced
Preliminary: Subject to Change
• C PROGRAMMING:
– Expressions and Operators
– C Programming Structures
– C Preprocessor
– Storage Classes
– Pointers and Arrays
– Stack Frames
– Dynamic Allocation
– Strings
– Structs and Unions
– C Data Structures
Preliminary: Subject to Change
• LANGUAGE TRANSLATORS & INTERPRETERS -
INTRODUCTION:
– Formal Language Concepts
– Regular Expressions
– Finite State Automata
– Scanner Generators
– Top-Down Parsing
– Bottom-Up Parsing
– Attribute Grammars
– Symbol Tables
– Parser Generators
– Optimization
Preliminary: Subject to Change
• LANGUAGE TRANSLATORS & INTERPRETERS -
ADVANCED TOPICS:
– Data Types
– Functional Programming
– Functional Optimizations
– Floating Point Implementation
– Heap Implementation
– Garbage Collection
– Class & Object Implementation
Preliminary: Subject to Change
• Additional Possibilities
– Variable arguments to functions
– Adding/subtracting/multiplying/dividing of floats
– Implementation of polymorphism and inheritance
• Will be posted to .announce newsgroup: git.cc.class.cs2130.announce
• Also on the Co-Web
• Learn C Programming Language
– Portability
– Systems programming capable
– Widely used in Ga Tech CoC
– Gets close to machine
• Translation & Interpretation
– Heart of computer science
– Key concept
– Widely used
–UNIX written "by programmers, for programmers"
–Support for C programming
–Good software tools
–Crash-resistant
–100% DOJ-approved!
• UNIX never the subject in anti-trust lawsuit
• Officially supported platforms (programs will be tested and graded here)
– Solaris
– Red Hat 7.1 Linux
– Available in CoC labs, or install at home
• Unofficially supported (may be used for some development work, but test it on an "official" platform before turning in!)
–
–
Mac OS X
Cygwin on Win 9x/NT/2000
– Install at home
• Installing Solaris
– Intel version (x86) can be downloaded free http://www.sun.com/software/solaris/binaries/
– Not recommended unless you enjoy pain
• Installing Redhat 7.1
– Most accurately duplicates lab environment
– Requires separate disk drive or partition (back up your hard disk!)
– Free CDs available from Linux Users Group (LUG) http://www.lugatgt.org/
– Or download from Georgia Tech Linux FTP site ftp://ftp-linux.cc.gatech.edu/pub/Linux/index.html
• Installing Mac OS X
– Easiest to install for Mac users (uses existing disk partition)
– Greenlee likes it (good for brownie points)
– If you are a Mac user, you will have to get it eventually anyway, so why not start now?
– Disadvantage: only one that's not free :-(
• Installing Cygwin
– Easiest to install for Windows users (uses existing disk partition)
– Two versions:
Command Line http://sources.redhat.com/cygwin/
X Windows http://sources.redhat.com/cygwin/xfree
– Disadvantage: Greenlee will make fun of you for using Windows
• Installing and running Linux (i.e being the system administrator) is a very valuable experience
• Solaris will find errors that Linux will not find
• Good practice for real world
• All programming assignments must
– compile cleanly (i.e. no warnings or errors) with gcc -Wall -O2 -ansi -pedantic
– lint cleanly where appropriate (Solaris)
– exit gracefully
– produce useful output where applicable
• Capital crimes (== automatic 0)
– non-compiling or non-linting programs
– core dumps (or any ungraceful exit)
– infinite loops
– excessive spurious output
• More details in Administrative Information document
• Self-reliance
• CS 1/CS2 offer certain amount of hand-holding
• This is the first "real" CS/CmpE Course
• Preparation for real world
• Figure it out!
• Textbook
• Online Manuals
(RTFMP)
• Web Search Engine
• Newsgroups
• TA
• Jim Greenlee
• Textbook
• Online Manuals
(RTFMP)
• Web Search Engine
• Newsgroups
• TA
• Bill Leahy
• Do all assigned work
– Slackware is just a catchy name
• Start early
• Use the resources
• Remember: This is Computer Science not Rocket
Science
– Debugging is 90% psychological
• War and Ballistics
• Stored Program Computer
• Mechanizing Program Translation
LDA EXM CONT HLT STRT DEP
ENB