The exam will be closed-book closed-note except that you may reference the Java 6 API Documentation on the lab computers, as well as the JUnit, Servlet, and Jetty APIs. You will not be allowed to use your laptops or Eclipse, and are prohibited from browsing any other website or connecting to the mySQL server.
The exam will take the entire class time of 65 minutes. It is important to manage your time wisely, and focus first on questions you understand and know how to answer. This will help maximize your overall exam score.
The exam will be written, and will consist of several short answer questions. You may be asked to write short code snippets as well. The exam will cover all lectures, code examples, homework, and quizzes covered thus far in class. The topics include:
You are responsible for reviewing all of the materials provided in-class and online. This includes the following homework assignments and quizzes:
More details on each topic will be provided next.
Please refer to the Multithreading lecture page for details. Some example topics (non-comprehensive) that you may want to study include:
What are the states a thread can be in at any time?
Understand how to use thread-related functions, including the functions wait() and notify() in the Object class and the functions start(), sleep(), join() in the Thread class.
Understand how to use the synchronized keyword, and how the object used for the lock affects the number of threads that may enter a code block.
Please refer to the Web, HTTP, and HTML lecture page for details. Some example topics (non-comprehensive) that you may want to study include:
What is the Internet? What is the web?
What are some basic HTTP requests? What do they do?
Which requests can be used to send data to the web server, and how?
What is the difference between a static and dynamic webpage?
What are two approaches for generating dynamic webpages?
What are cookies and how do you use them?
What are the major components of any HTML webpage?
What are some common tags used in HTML webpages?
How do you use sockets to connect to a remote server?
Please refer to the Servlets and Jetty lecture page for details. Some example topics (non-comprehensive) that you may want to study include:
Are servlets client-side or server-side?
How do we create and use servlets using Jetty?
What are the major components of a Jetty server?
What are XSS (cross-site scripting) attacks? How is code injected into a webpage? What are some ways of preventing these types of attacks?
Please refer to the Databases and SQL lecture page for details. Some example topics (non-comprehensive) that you may want to study include:
What are some differences between temporary storage and persistent storage?
What is SQL?
What are some statements in the Data Definition Language (DDL) of SQL?
What are some statements in the Data Manipulation Language (DML) of SQL?
Describe some of the major column types available in SQL.
How do you create a table?
How do you insert, modify, and delete rows in a table?
How do you create a relationship between two tables?
What are the different types of JOINs?
How do you decide to sort results in a SELECT statement?
How do you filter out results in a SELECT statement?
How do you combine two columns together in a SELECT statement?
What are some aggregate functions that combine rows together? How do you determine which rows should be combined?
How do you to connect to databases using an SSH tunnel, a database.properties file, and JDBC in Java?
What are SQL injection attacks? How is SQL injected into a database? What should you do to prevent these types of attacks?
Please refer to the Comprehensive Example and Special Topics lecture pages for details. Some example topics (non-comprehensive) that you may want to study include:
How do you use the topics discussed so far to support user registration, login/logout, and session tracking?
How do you design a dynamic, database-backed Java webapp using the technologies discussed in class?