Post on 28-Dec-2015
Agenda
• Course Mechanics– Prerequisites– Instructors– Textbooks– Course Components– Assignments– Policies– Evaluation
• Course Overview– Syllabus– Languages & Translation– Programming Environment– Friendly/Fatherly Advice
Prerequisites
• 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
Instructors
• 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
Textbooks
• 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 indexesNote: There are two indexes
Textbooks
• 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
Course Components
• 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.
Policies
• 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
Resources
• 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
Co-Web
• http://swiki.cc.gatech.edu:8080/cs2130• Lots of stuff there from previous semesters• This semester's stuff available "soon“
• Diary: akbar@cc
Evaluation
• Homework (Collaboration) 5%• Labs 20%• Project 15%• Tests (2 @ 15%) 30%• Final 30%
• Total 100%
Course Overview
• C Programming• Language Translators & Interpreters: Introduction• Language Translators & Interpreters: Advanced
SyllabusPreliminary: 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
SyllabusPreliminary: 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
SyllabusPreliminary: Subject to Change
• LANGUAGE TRANSLATORS & INTERPRETERS - ADVANCED TOPICS:– Data Types– Functional Programming– Functional Optimizations– Floating Point Implementation– Heap Implementation– Garbage Collection– Class & Object Implementation
SyllabusPreliminary: Subject to Change
• Additional Possibilities– Variable arguments to functions– Adding/subtracting/multiplying/dividing of floats– Implementation of polymorphism and inheritance
Official Syllabus
• Will be posted to .announce newsgroup:
git.cc.class.cs2130.announce
• Also on the Co-Web
Languages & Translation
• 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
Programming Environment
All programs written and tested in a "UNIX-like" programming environment
–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
What flavors of UNIX?
• Officially supported platforms (programs will
be tested and graded here)
– Solaris
– Red Hat 7.1 Linux
– Available in CoC labs, or install at home
What flavors of UNIX?
• 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 Software
• 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 siteftp://ftp-linux.cc.gatech.edu/pub/Linux/index.html
Installing Software (cont)
• 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
Why Linux and Solaris
• 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
Requirements for Assignments
• 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
Course Philosophy
• 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!
Chain of Command
• Textbook• Online Manuals
(RTFMP)• Web Search Engine• Newsgroups• TA• Jim Greenlee
• Textbook• Online Manuals
(RTFMP)• Web Search Engine• Newsgroups• TA• Bill Leahy
Keys to Success
• 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