CS 152 - Lecture 1

Cay S. Horstmann
Course Objectives
- Objectives:
- To ensure that students gain an understanding of programming language
design and language translation.
- To achieve competence in a functional programming language.
- What will you learn?
- How a programming language is compiled or interpreted
- How to program in paradigms other than OO
- Why should you care?
- For most of your career, you will program in a language other than
Java or C...
- ...and none of us knows today what that language is
Java is not the End of History

- 1960: Fortran, Algol, Lisp (Dates approximate)
- 1980: C
- 1990: C++
- 1995: Java
- Java is showing its age
- Not “agile”
- Weak support for multiprocessing
The “Cambrian Explosion” of Languages

- Check out dzone.com (an aggregator of
blogs for software engineers)
- In any given week, lots of programming languages are discussed
- Ruby, Groovy
- Python, PHP, Perl
- C#
- JavaScript
- JavaFX, Flex
- Scala
- Fortress, X10
- Some are optimized for different tasks (UI, parallel programming,
scripting, ...)
- Some aim to be your next general purpose language
Why Scala?

- Multi-paradigm language
- Similar to Java
- We use the functional subset instead of Scheme
- We use the combinator parser library instead of JavaCC/Antlr
- Fewer things to learn => Can get deeper where we want to go
Changing Your Brain

- Biology of learning
- You don't learn by listening alone
- Four activities are necessary
- Experience
- Reflect
- Form hypothesis
- Test hypothesis
- Correspond to brain areas
Homework
- Make sure your laptop has the Java Development Kit version 1.6 or better
properly configured. To test, open a shell window and type
javac
-version. You should get something like javac 1.6.0_06.
If you instead get an error message that the command is not found, first
install the JDK and set the PATH to include the
jdk/bin directory.
- Make sure you can log into eCampus
- Make sure you can log into the wireless network
Lab

- Format of classes: approx. 20 minutes lecture, 45 minutes lab, 10 minute
wrap-up
- No lab today
- Bring your laptop for the next lecture, with JDK 1.6 installed
- You will work with a buddy
- One of you fusses with the code, the other types up answers
- Switch roles each time
- Submit lab work to eCampus.