Mark
Royer

Class Material

COS 221 (Fall 2013)

COS 221 covers C++ programming techniques with classes and dynamic memory management through the study of common data structures such as lists, stacks, queues, and trees. Sorting and searching algorithms are discussed.

Course Resources

Previous Courses

COS 225 (Spring 2012)

COS 225 is an introduction to programming and design using the Java Programming Language. Some useful resources for the class are listed below.

Course Home Page

Lab Material Covered

Lab Exercises

  • Lab 0 (1/9)
    • Tasks:
      • Find course materials.
      • Enable log-in for lab computers.
      • Create your first Eclipse project.
      • Create your first jar file.
    • Goal: Students should be able to create and submit a Java project inside the Eclipse IDE.
    • Resources:
      • Posted on Blackboard.
  • Lab 1 (1/16)
    • Tasks:
      • A first look at the Java 7 API
      • Discuss JVM architecture and Garbage collection
      • Exercises involving Strings and for-loop structures
    • Goal: Students should understand object creation and deletion in the JVM, and they should be able to code simple, small code segments using String and for loops.
    • Resources:
      • Posted on Blackboard.

COS 397 (Spring 2012)

COS 397 is the first of three courses intended to help students design and create a senior capstone proposal.

Course Home Page

Course News Group

Resources

COS 497 (Spring 2012)

COS 497 is the final of three courses geared towards helping students create a senior capstone project. Students are expected to complete the project work they started in earlier semesters. They also must demonstrate the project's completion, and give an oral presentation at the end of the semester.

Course Home Page

Course News Group

Resources

COS 225 (Spring 2011)

COS 225 is an introduction to programming and design using the Java Programming Language. Some useful resources for the class are listed below.

Course Home Page

Lab Material Covered

Lab Exercises

  • Week 1 (1/10) - Canceled
  • Week 2 (1/17)
  • Week 3 (1/24)
    • Tasks:
      • Further explore Eclipse.
    • Goal: Students should be able to create Java projects, create javadoc, and export Java projects.
  • Week 4 (1/31)
    • Tasks:
    • Goal: Students should be comfortable building and testing complex systems.
  • Week 5 (2/7)
    • Tasks:
      • Discuss functional testing.
      • Explore Unit testing.
      • Look at simple the nim game example.
      • Example source code: NimGameSystem.jar
      • Exercise 5
    • Goal: Students should know the different approaches to building and testing complex systems.
  • Week 6 (2/14)
    • Tasks:
    • Goal: Students should be able to program and specify Java interfaces.
  • Week 7 (2/21)
    • Tasks:
    • Goal: Students should be able to create Unit tests that ensure object correctness.

COS 397 (Spring 2011)

COS 397 is the first of three courses intended to help students design and create a senior capstone proposal.

Course Home Page

Course News Group

Resources

COS 497 (Spring 2011)

COS 497 is the final of three courses geared towards helping students create a senior capstone project. Students are expected to complete the project work they started in earlier semesters. They also must demonstrate the project's completion, and give an oral presentation at the end of the semester.

Course Home Page

Course News Group

Resources

COS 226 (Fall 2010)

COS 226 is a data structures course taught using the Java Programming Language. While the course is taught in Java, as with other courses, the class is language independent. Students taking this course should have a strong programming knowledge. COS 225 is a prerequisite to this course.

Course Home Page

Course News Group

Data Structure Resources

COS 225 (Spring 2010)

COS 225 is an introduction to programming and design using the Java Programming Language. Some useful resources for the class are listed below.

Course Home Page

Lab Material Covered

  • Week 1 (1/11)
  • Week 2 (1/18)
    • Tasks:
      • Review using the class structure and using the compiler and JVM.
      • Create and extract jar files using the jar tool
      • Generate java documentation using the javadoc tool
    • Goal: Students should be able to compile their Java programs into executable code and group the results in jar files. Students should be able to correctly document code in the Java style using annotations (@author, @param, and @result), and they should be able to generate the html documentation using the javadoc tool.
    • Resources:
  • Week 3 (1/25)
    • Tasks:
      • Introduce testing discussed in Chapter 6.
      • Discuss testing: Functional testing and Unit testing.
      • Create JUnit tests for Circle and Rectangle classes in doej-p1-01.jar
    • Goal: Students should understand the foundations of test driven design. Students should be able to create and execute test cases using the JUnit test framework as integrated in Dr. Java.
    • Resources:
  • Week 4 (2/1)
    • Tasks:
      • Look at Java equality.
      • Discuss autoboxing.
      • Look at simple Scanner example.
      • Example source code: EqualityAndScanner.jar
    • Goal: Students should be able to tell the difference between various types of equality in Java. Students should be able to write interactive programs using the Scanner.
  • Week 5 (2/8)
    • Tasks:
      • Create a jar file with a modified Manifest.
      • Create an executable jar file.
      • Modify the Nim game to have user interaction. Two human players should be able to play against each other.
      • Example source code: nimgame.jar
    • Goal: Students should be able to create customized manifest files and executable jar files. Students should be able to feel comfortable using the Scanner class to read from standard input.
  • Week 6 (2/15)
    • Tasks:
      • Look at programming by contract.
      • Use JUnit testing with constraints.
      • Complete source code: summations.jar
    • Goal: Students should be able to program with preconditions, postconditions, and class invariants.
  • Week 7 (2/22)
    • Tasks:
    • Goal: Students should be able to program and specify Java interfaces.
  • Week 8 (3/15)
    • Tasks:
      • File I/O
    • Goal: Students should be able to write programs that read and write to the file system.
  • Week 9 (3/22)
    • Tasks:
      • The List Interface: Introduction to using generics in Java. Exercise involves creating an array based list implementation.
      • The library is containers.jar.
    • Goal:Students should be able to define the underlying implementation of an ArrayList.
  • Week 10 (3/29)
    • Tasks:
      • Exercises dealing with Java Generics.
    • Resources:
    • Goal:Students should be able to create classes and interfaces that use basic generic practices.
  • Week 11 (4/5)
    • Tasks:
      • Generate a generic ArrayList list structure.
      • The library is Containers2.jar.
    • Goal:Students should be able to create the concrete List implementation as a generic ArrayList.
  • Week 12 (4/12)
    • Tasks:
      • Look at the design patterns for comparing objects in Java.
      • Using Comparators, students will modify the sorting in the application shapes.jar.
    • Goal:Students should be able to create Comparators and the Comparable interface.
  • Week 13 (4/19)
    • Tasks:
      • Analyze the design decisions in the Turtle World.
      • The jar file is turtleDesgin.jar.
    • Goal:Students will learn how to re-factor and break apart complex code structures.
  • Week 14 (4/26)
    • Tasks:
      • Review and discuss final project.
      • Look at another IDE, Eclipse (eclipse.org)
      • Sharing your code. We will look at a library that can be used to share console projects on the web using called the applet console
    • Goal:Students should understand what is needed to finish the final project. Students will learn some of the basic features in Eclipse. Students will learn how to develop an applet and an executable jar file.

COS 226 (Fall 2009)

COS 226 is a data structures course taught using the Java Programming Language. While the course is taught in Java, as with other courses, the class is language independent. Students taking this course should have a strong programming knowledge. Typically students take COS 225 before taking this class.

Course Home Page

Course News Group

Data Structure Resources

COS 225 (Spring 2009)

COS 225 is an introduction to programming and design using the Java Programming Language. Some useful resources for the class are listed below.

Course Home Page

Java Programming Resources

Popular Java IDEs (Integrated Development Environments)

  • Dr. Java (drjava.org) - Fundamentally sound, simple IDE that is great for first time Java programmers. Facilitates JUnit testing, Javadoc creation, and contains a useful interaction panel.
  • Eclipse (eclipse.org) - Robust industry tool backed by IBM. Contains tools for most Java development. Uses plug-ins to allow for a variety of different configurations and additional tools. Typical tools include JUnit testing, Javadoc creation, CVS, SVN, etc.
  • Netbeans (neatbeans.org) - Another very powerful IDE. Netbeans is backed by Sun Microsystems. It is very robust and has a variety of tools and add-ons. It supports JUnit testing, Javadoc creation, CVS, and has excellent GUI and Web application support.

Lab Material Covered

  • Week 1 (1/12) An introduction to the Java programming language was given. Students compiled and executed their first Java program using Dr. Java. References and additional resources were shown to students.
  • Week 2 (1/19) An example project that can be used as a template for submissions was discussed. It can be downloaded from doej-p1-01.jar. Fundamental object-oriented programming terminology was discussed.
  • Week 3 (1/26) Unit testing, described in chapter 6, was discussed. Students converted the Test class from the previous week into JUnit (A unit testing framework for Java) test cases.
  • Week 4 (2/02) A closer look at equality. The first use of the Scanner class. Additional resource: EqualityAndScanner.jar
  • Week 5 (2/09) Interacting with users. Further look at the Scanner class using the nim game. A look into the manifest file. Additional resource: nimgame.jar
  • Week 6 (2/16) Using another programmer's implementation. Creating an applet using the applet console.
  • Week 7 (2/23) Programming by contract, working with a debugger, and creating unit tests from assertions. Additional resource: summations.jar
  • Week 8 (3/16) Interfaces: An exercise is given that demonstrates how to develop the concrete implementation for an interface and integrate it into a project. Source code and examples are shown in the interfaceExample.jar.
  • Week 9 (3/23) File I/O: Using the Scanner class to read from a file. Using the PrintWriter class to write to a file.
  • Week 10 (3/30) The List Interface: Introduction to using generics in Java. Exercise involves creating an array based list implementation. The library is containers.jar.
  • Week 11 (4/06) Continued exercise involving creating an array based list implementation of a List. The library is containers.jar.
  • Week 12 (4/13) Created a LinkedList implementation of a List. The library is containers.jar.
  • Week 13 (4/20) Using Comparators. Function object example using shapes and sorting based on the comparator. The library is shapes.jar.

COS 226 (Fall 2008)

Course Home Page

Course News Group

Data Structure Resources

COS 225 (Spring 2008)

Lab Material Covered

  • Week 1 (1/14) Hello World and introduction to Dr. Java.
  • Week 2 (1/21) Example project submission with Rectangle and Circle classes. Additional resource: doej-p1-01.zip
  • Week 3 (1/28) The basics of a class and an introduction to test cases.
  • Week 4 (2/04) Introduction to the Scanner class and a look at the meaning of equality in Java. Additional resource: EqualityAndScanner.zip
  • Week 5 (2/11) Testing: A comparison and analysis of JUnit testing and functional testing.
  • Week 6 (2/18) More on handling user input with the Scanner class. Addtional resource: nimGame.zip
  • Week 7 (2/25) Assertions in Java: Preconditions, Postconditions, Invariants, and the Java assert statement.
  • Week 8 (3/17) Packaging programs in Java. Jar files and the jar tool. Using another programmer's implementation. Example using the applet console.
  • Week 9 (3/24) Eclipse IDE: Looking into some of the basic features of the Eclipse development platform.
  • Week 10 (3/31) File I/O: Using the Scanner class to read from a file. Using the PrintWriter class to write to a file.
  • Week 11 (4/7) Interfaces: An exercise is given that demonstrates how to develop the concrete implementation for an interface and integrate it into a project. Source code and examples are shown in the interfaceExample.jar.
  • Week 12 (4/14) The List Interface: Introduction to using generics in Java. Exercise involves creating an array based list implementation. The library is containers.jar.
  • Week 13 (4/21) Using Comparators. Function object example using shapes and sorting based on the comparator. The library is shapes.jar.

COS 226 (Fall 2007)

Course Home Page