CS 246: Programming Paradigms
Prof. Richard Eisenberg
Spring 2017
Bryn Mawr College
Instructor: | Richard Eisenberg |
Email: | rae@cs.brynmawr.edu |
Office Phone: | 610-526-5061 |
Home Phone (emergencies only): | (redacted) |
Cell Phone (emergencies only): | (redacted) (no texts, please) |
Office: | Park 204 |
Office Hours: | Mondays 1:15-2:30, Tuesdays 2:30-3:30. |
If these don’t work, do not fret. Email instead. | |
Lecture: | TR 12:55pm-2:15pm |
Lecture Room: | Park 336 |
Lecture Recordings: | at Tegrity (Non-BMC students can login through our Moodle page.) |
Lab: | R 2:25pm-3:45pm |
Lab Room: | Park 231 |
TA: | Rachel Xu: MW 8:00-10:00pm in Park 231 |
Website: | http://cs.brynmawr.edu/cs246 |
GitHub Repo: | https://github.com/bmc-cs246/cs246 |
Mailing List: | cs246-sp17@lists.cs.brynmawr.edu |
By the end of this course, you will be able to…
During the course, you will…
This is a course in systems programming using the C programming language. C undergirds the world of modern computers and runs on anything. Learning C will also teach you how a computer really works under the hood and it will power your knowledge of programming and system building on any platform.
A secondary goal of this course is to give you a chance to learn some fundamental technologies in widespread use. As a computer scientist, you will be expected to know about Makefiles, version control, and command-line execution. The labs for this course thus center on this often-untaught topics.
In order to learn any programming skill, you must simply do it. Reading a book or watching me code will not help you get better. This course is thus programming-intensive. You will be expected to spend a significant amount of time weekly (6-8 hours) outside of class programming to complete the homework assignments. If you run into a snag, the programming burden may prove to be even higher. Of course, programming is fun, so the time should fly by.
Class time in CS246 will be spent primarily working with peers to solve small programming problems, conduct peer reviews, and complete other exercises. It is expected that you complete the reading before class and come with questions; I will try to avoid spending large chunks of class time repeating what the book says so well.
Reading assignments will include significant chunks of both of the following books:
C Programming: A Modern Approach by K. N. King (2nd edition). W. W. Norton & Company, 2008. Available at the campus bookstore.
The Linux Command Line: A Complete Introduction by William E. Shotts, Jr. No Starch Press, 2012. Available at the campus bookstore and for free download through both the Bryn Mawr and Haverford libraries.
The following book is an alternative introduction to C that may be helpful to you. Readings will not be assigned from it, however:
These books are useful references and will enjoy a long shelf-life in your computer science book collection:
The C Programming Language by Brian W. Kernighan and Dennis M. Ritchie (2nd edition). Prentice Hall, 1988. The first edition of this book is what introduced C to the world.
The C++ Programming Language by Bjarne Stroustrup (4th edition). Addison-Wesley Professional, 2013. The first edition of this book is what introduced C++ to the world. Equipped with C, you may want to learn C++, which builds on top of C in wonderful (and some weird) ways.