Note: This course previously offered as 08-671. This course provides an intensive exploration of computer programming in the Java Language for students who have had some prior, but perhaps limited, programming experience in Java or in some other programming language. The course starts with a review of the fundamental topics of programming in Java (data types, operators, control structures) along with discussions of object oriented programming (classes, instances, and class hierarchies). After covering the basics we move on using Java to cover simple graphical user interfaces (using Swing), file I/O, concurrency (i.e., threads), network I/O (HTTP), simple data structures (lists and maps). Students are required to have a reasonably modern laptop computer on which they will need to install the Java software used for this course. This course is open to undergraduate students who have some programming experience.