20-ECES-694-001
Advanced Programming Concepts Spring, 2008
Meets: T-H in Baldwin 649 from 11:00AM to 12:15PM.

Instructor: John Franco
   Office: 821 Rhodes (Office Hours: W-F 11:00AM-12:00PM)
   Phone: 556-1817
   Email: franco@gauss.ececs.uc.edu (among other things for an account on helios)
   Web: http://www.ece.uc.edu/~franco (http://gauss.ececs.uc.edu/Users/Franco for the course page)

TA:Weiya Yue
   Office: 805C Rhodes (Office Hours: X-X XX:XX-XX:XXPM)
   Email: yuewa@email.uc.edu

Description:
    Treats sophisticated ways to use advanced programming constructs which are now or are beginning to be commonplace in modern general purpose programming languages. For example, we consider the advanced use of exceptions, threads, reflection, streams, sockets, remote method invocation, virtual functions, among other concepts. In addition, modern security features including provisions for public-key crytosystems and class encoding will be discussed. All the examples we use will be coded using Java. Hence, learning Java will be part of the course.

Prerequisites:
    The usual programming courses that a senior will have taken including 20-ECES-323 and 20-ECES-403. The student is expected to know what Object Oriented Programming is and is expected to have significant programming experience in OOP, especially using C++.

Grading (approx):
    Distribution of credit: Midterm exam - 30%; Project - 70%. Grades are assigned on an informal "curve". If you fail the project you fail the course. The project will be assigned by the middle of February and will be due on the last day of the final exam week of this quarter. A preliminary version of the project appears now on the official course web page. Watch for updates, though.

Textbook - Niemeyer preferred:
    Learning Java by Patrick Niemeyer and Jonathan Knudsen, O'Reilly, 3rd Ed., ISBN: 0-59600-873-2 (2005)
Available online: here
Java How to Program, 6th Edition by Paul Deitel and Harvey Deitel, Prentice-Hall, ISBN: 0-13148-398-9 (2004)

Accounts:
    You will have the opportunity to get an account on my machine so you will have access to cgi-bin for some Common Gateway Interface programming in Java and a late version of Java (1.5.0). To get an account, show up in my office and ask for one (it is probably best to specify a desired account name which matches that of a machine you have access to since you will use ssh to login). You will also have your normal university accounts. However, note that unless you do something to protect it, all students and most faculty have access to your department account.

The name of the machine holding the account is helios.ececs.uc.edu.

Homework Policy:
    Four homeworks will be assigned this quarter. Solutions were provided but now that we have a grader why don't we let him take a look at what you do and return comments. So, give the problems a try and, if you need to, see me or the grader for help. Please remember, you are professionals, the homeworks are intended to excercise your mind, not to punish. So, for your benefit, I would suggest doing them.

Schedule: (approximate, SUBJECT TO CHANGE - Do-At-Home-Exam in 7th week)

WeekClass MaterialReading (Niemeyer, 3rd ed.)
1Basic Introduction to Java ApplicationsChapters 2, 3
2Exceptions, Arrays, Packages, Variable VisibilityChapters 4, 5
3Multiple Inheritance, Interface, ThreadsChapters 5, 6, 9
4Threads, Abstract Windowing ToolkitChapters 9, 16, 17
5AWT, ReflectionChapters 7, 9, 18, 19 + other sources
6Utilities, Input/Output StreamsChapters 11, 12
7Out of Town - Do At Home ExamYour Brains
8Network ProgrammingChapters 14, 15
9Network Security, Data Base (JDBC)other sources
10Data Base (JDBC), Reviewother sources