Prof.
McCracken Office: NAC 8/202E
Email:
mccracken@cs.ccny.cuny.edu
or
ccnyddm@aol.com
Website: ccnyddm.com check for news, homeworks, etc.
NAC 5/150
TuTh 3:30-4:45
Prerequisite: CSc 212, Data Structures
Text:
Deitel and Deitel, Java How to Program, Seventh edition, Prentice
Hall, 2007.
And see Blackboard for the course, for which you will need your CCNY email
address.
Syllabus
Goals of the course:
To help you develop considerable proficiency in Java. We have a good text and I trust the lectures will help, but you will learn programming by doing it. You will be working on some kind of programming assignment at all times except exam days.
To help you develop a reasonably full understanding of object-oriented programming: what it is, why it is important, and how to do it.
To extend your command of what is meant by program design. Our design tool will be UML.
To introduce you to the Java approach to compilation and execution, which involves the Java Virtual Machine executing bytecode. This is the heart of Sun’s slogan, “Write Once Run Anywhere.” We will see how this applies to code in everything from Enterprise computing (mainframes, which are definitely not dead) to the software that runs radios, cell phones (some of them), anti-lock brakes, and a great many other things. It is the heart of IBM’s strategy for developing Web-based applications, using Java, Linux, and the DB2 (or any other) database system.
To build a foundation understanding of Design Patterns. The most important of these, the Model/View/Controller pattern, I have been teaching for some years. This term we will explore the Factory, Singleton, Façade, Observer (part of MVC), others. We will be learning much of this together, too. But no other major new topics this semester. UML and design patterns are enough.
One of this text’s outstanding features is that all code examples are complete programs, and the programs are on the book’s CDs. I will be using these examples in many/most lectures.
In showing programs and software use in class, I will use Windows, but you are free to use Linux, or take this occasion to get started learning it. Linux is not a part of any required course, but you should definitely know it.
We will review the basic ideas of object-oriented programming (OOP). You should have seen encapsulation and inheritance, but probably not the third leg of OOP, polymorphism. We will study graphical user interfaces (GUIs) in some detail, although it will be impossible to cover more than a fraction of the power that the Java-based graphics packages provide. You will get enough experience with GUI development to learn the rest of that subject on your own; we need course time for things that are not so easily learned by oneself.
We will explore some of the advanced features of Java, things needed for any serious computing: regular expressions: collections (sets, map, and lists); accessing databases with JDBC, and some selection from threads, generics, and serialization.
I love email. Talk to me: ccnyddm@aol.com, or mail to mccracken@cs.ccny.cuny.edu will be forwarded there. I check my mail many times a day, usually. I can’t promise instant response on all occasions, but I try. PLEASE PUT THE COURSE NUMBER IN THE SUBJECT LINE. I get about ten times as much spam as real mail, and if your subject doesn’t help me, I may unintentionally discard your mail unread. Since all homework is submitted by email, this really is crucial.
Tentative grading, subject to change:
Homeworks: 25%
Quizzes (about 5): 20%
Midterm I: 15%
Midterm II: 20%
Final project, which will have several separately-graded deliverables: 20%.
In computing your course grade I discard your lowest homework and your lowest quiz.
This is one of my favorite courses. I designed it and introduced it, and have taught it 20+ times. I never get tired of it, in large part because it’s always changing. I take great delight in showing people student projects, which are highly educational and satisfying to all. The switch to Java has certainly made the course more interesting for me, and now that Java is the world’s most widely used programming language, Java is the only reasonable choice for the course.
NOTE: I think it’s probably good to have the latest version of the Java software, which means that it is preferable that you get it by a download from Sun. If anybody has bandwidth problems in doing that, I can provide it on a memory stick.
We will be using two IDEs (Integrated Development Environment): JCreator (sometimes) and Eclipse (most of the time). JCreator Learning Edition is a free download. Eclipse is on the course CD, for the convenience of students without access to broadband. There are many other IDEs, but Eclipse is used more widely in industry than all others combined.
There will be two midterms and a major project, but no final.
Tentative homework projects. Very subject to change.
Final project (2.5 weeks) will built on HWs 5 and 6. A database application using MySQL Details to be determined.