Meeting 3:30PM-4:45PM | Sep 6-Dec 13 in Edgerly 102 |
Final 2:30 - 4:30 | Tuesday Dec 13 |
Instructor: | Stephen Taylor |
Office: | Edgerly 312A |
Office hours: | Wed and Thurs 11AM, ... |
Web page: | http://computersystemsartists.net |
Email: | staylor@fitchburgstate.edu |
Office phone: | 978-665-3704 |
Home phone: | 508-867-9288 |
Ten percent of the grade is based on class-room participation. During the first several meetings of the course, I call the roll. Once I learn names and faces I stop calling the roll, but I continue to be interested in your presence.
So do other students. Don't deprive them of your insights!
Bruce Tate, Seven Languages in Seven Weeks, 2010, Pragmatic Bookshelf, Raleigh, North Carolina ISBN: 978-1-93435-659-3It is relatively cheap for a CS textbook, and is also available used, both in the bookstore and online.
I think it is worth having a paper book just to make marks in the margins.
As the title attempts to convey, this is an introduction to several languages, Ruby, Io, Prolog, Scala, Erlang, Clojure, and Haskell, which will be at the center of the course this term.
You should probably install each of these on your computer as we come to it. Otherwise you'll find it difficult to do the homework.
Since the book is an introduction, but not a reference, you'll want to search out websites to find documentation and sources for library functions. In fact, for each language, I'll assign you to find (and submit your URLs for) several such sites.
We will also talk about other languages, in particular Java and C, both of which we teach at FSU in courses which are prerequisites to this one. You may find it necessary to review these languages during the course. Online resources may be helpful.
For C:
The GNU C manual http://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html
The GNU C pre-processor manual,
https://gcc.gnu.org/onlinedocs/gcc-2.95.3/cpp_1.html
The C library reference guide https://www-s.acm.illinois.edu/webmonkeys/book/c_guide/
For Java:
The Java Syntax Specification https://docs.oracle.com/javase/specs/jls/se7/html/
From time to time I will put programs from lectures on the web.
Many of the homework assignments will be taken from the textbook. You'll find them easier if you can refer to the book as you work on them, although you'll probably need to supplement the book's terse language descriptions with reference material from the web.
Each of these interesting languages strongly stresses some ideas which are not as central in many other languages, and you'll need to absorb a lot of new concepts. The best way to do so is to write programs.
One of the reasons this course exists is that some ideas are more easily expressed in one computer language than another. You're going to spend a big chunk of your programming time trying to express ideas in the new language that you think you could easily write down in C. Go ahead and write them down in C; that can form part of the documentation of the project. But usually there will be a completely different way to do something, which is closer to the spirit of the new language, shorter, and sometimes more efficient. Often, but not always, the different way will appear in the language documentation. Sometimes you'll discover it yourself, other times you'll find programming tricks on the web.
Note that each day's reading in the text ends with a homework assignment. We'll begin each lecture with a short quiz on the reading.
We'll discuss the assignments in the lecture, and they will be due at the beginning of the following lecture.
So a reasonable study strategy is to go over the reading before the lecture, and do the homework afterward. You'll need access to an implementation of the particular language to do most of the homeworks. Some of them have on-line web pages, but all of them are available as free downloads for Windows or linux.
date | topic | assigned reading before lecture |
---|---|---|
Tues Sep 6 | Syllabus. Pep talk. | Chapter 1, pp 1-8 |
Thur Sep 8 | Ruby Day 1 | Ch 2, pp 9-19 |
Tues Sep 13 | Ruby Day 2 | Ch 2, pp 19-32 |
Thur Sep 15 | Ruby Day 3 | Ch 2, pp 32-44 |
Tues Sep 20 | Io Day 1 | Ch 3, pp 45-59` |
Thur Sep 22 | Io Day 2 | Ch 3, pp 59-68 |
Tues Sep 27 | Io Day 3 | Ch 3, pp 68-80 |
Thur Sep 29 | Prolog Day 1 | Ch 4, pp 82-95 |
Tues Oct 4 | Prolog Day 2 | Ch 4, pp 95-106 |
Thur Oct 6 | Prolog Day 3 | Ch 4, pp 106-120 |
Tues Oct 11 No class. [Friday schedule] | ||
Thur Oct 13 No class. Presidential Inauguration at FSU. | ||
Tues Oct 18 | Hour Exam comparing Ruby, Io, Prolog | |
Thur Oct 20 | Scala Day 1 | Ch 5, pp 121-139 |
Tues Oct 25 | Scala Day 2 | Ch 5, pp 139-153 |
Thur Oct 27 | Scala Day 3 | Ch 5, pp 153-166 |
Tues Nov 1 | Erlang Day 1 Ch 6, pp 167-181 | |
Thur Nov 3 | Erlang Day 2 Ch 6, pp 181-193 | |
Tues Nov 8 | Erlang Day 3 Ch 6, pp 193-208 | |
Thur Nov 10 | Clojure Day 1 | Ch 7, pp 209-229 |
Tues Nov 15 | Clojure Day 2 | Ch 7, pp 229-242 |
Thur Nov 17 | Clojure Day 3 | Ch 7, pp 242-254 |
Tues Nov 22 | Haskell Day 1 | Ch 8, pp 255-272 |
Thur Nov 24 No class -- T-day | ||
Tues Nov 29 | Haskell Day 2 | Ch 8, pp 272-281 |
Thur Dec 1 | Haskell Day 3 | Ch 8, pp 281-300 |
Tues Dec 6 | Hour Exam comparing Scala, Erlang, Clojure, Haskell | Ch 9, pp 301-310 |
Tues Dec 12 5PM | Final Exam administered through Blackboard |
For example, in Java, which we won't review this term, but which you have already seen, the idea of polymorphism is available in two different ways: through class inheritance and through interfaces.
Class Participation: | 10% |
In-class labs and quizzes: | 20% |
All exams: | 30% |
Programming Projects: | 40% |
I do not consider homework which is emailed to me to be turned in on time, no matter when you sent it. Unless the stupid thing is down, use the Blackboard dropbox.
There are no makeup or early exams, but I may excuse an exam for a good story, presented in advance, like your grandmother getting married that day in Provincetown.
For every assignment, I expect you to turn in a Development diary. The development diary will be at least half a page long, and I actually like longer ones better. It will be neatly word-processed and beautifully formated. It will tell me about your successes and frustrations in coding up the program, which blind allies you went up, how you figured out where you went wrong, etc. If you never make any mistakes at all, you can tell me how how avoid them, because I'd sure like to know! Part of your grade for the project will be based on this development diary.
Each student is responsible for completing all course requirements and for keeping up with all activities of the course (whether a student is present or not).
I consider it plagiarism to share typing or fail to give credit to other peoples' ideas.
Fitchburg State University has an Academic Dishonesty policy, which can be found in the college catalog. Penalties for academic dishonesty, including submitting work which is not your own, and assisting other students on examinations, can be severe.