The course lays the conceptual foundation of object-oriented programming. It covers delegation and contracts, encapsulation and API programming, aggregation and the collections framework, inheritance and polymorphism, all from the client's perspective. It also covers language-specific topics like types, control structures, and exception handling. The coverage is done within the framework of the software development process and emphasizes software engineering throughout.
Dr. Burton Ma
Department of Computer Science and Engineering
Room 1012J
Office Hours:
3:30—5:00 pm on Monday, Wednesday, and Thursday.
Course web pages:
CSE1020 (the general
course web page)
CSE1020E
(Section E specific web page)
Word games seem to be very popular...
These games seem simple but beneath the surface lies a great deal of computer science and engineering.
What are some of the problems that you need to solve to create games like the ones we just saw?
Problem | Relevent Topics in Computing |
search dictionary for a word | data structures, algorithms, algorithms analysis |
find all words in a group of letters | algorithms, algorithms analysis |
interact with user | human-computer interaction |
write software | software engineering, programming languages |
In 1020 we will be studying and practicing computer programming. The language we will be using is Java, and we will be using a Linux operating system in the labs.
The approach that is taken in 1020 is a client-based one; this means that you will be assembling pre-built components to create a computer program. The designers of this course felt that it is important that you learn how to build a program from pre-existing components before learning how to create your own components.
Broadly speaking you need to master three things to succeed in this course:
Thing you Need to Master | How To Master |
basic Java and computing science | attend lectures, attend labs, read textbook, do the practice problems and eChecks, look online at reputable sources, use office hours, practice, practice, practice writing code |
programming tools (editor, compiler, reference material) |
attend lectures, attend labs, practice, practice, practice writing code |
lab environment | attend labs, spend extra time in the lab using Linux |
You need to get a CSE account so that you can use the computers in the computer labs and so that I can send you email. To get an account, you need to go to any one of the Prism computer labs (CSE1004 or CSE1006) and follow these instructions.
Email lists are generated automatically based on information from the Registrar (i.e. I have no control over the addresses in the list). Email I send to the entire class will go to your Computing Science and Engineering (CSE) account.
If you want your email to go to a different account, you can forward it to that account using the following steps:
The text book was written specifically for teaching 1020. It contains all of the weekly programming exercises (the eChecks) and includes a CD ROM with most of the software used in the course.
You are expected to read approximately one chapter per week. See
the reading schedule.
Monday |
10:30—11:30 AM |
Curtis Lecture Hall (CLH) H |
Wednesday |
10:30—11:30 AM | CLH H |
Friday |
10:30—11:30 AM | CLH H |
The lectures are not 50 minutes of me talking. Generally, I will start each lecture by posing a small problem. We will work through the solution of the problem, introducing concepts (with many examples) as they are needed. Then you will asked to work on a new problem.
I will demonstrate the use of software tools (editor, console, compiler, Java application launcher) that are similar or identical to the ones you will use in the labs and labtests.
If you have a laptop, you should set it up for Java software development and bring it with you to class.
Lecture slides will be posted the morning of each lecture. The slides are meant to be viewed from a modern web browser with JavaScript enabled. See here for how the slides are made.
Monday |
2:30—4:00 PM |
CSE 1004A |
Wednesday |
2:30—4:00 PM (starts today!) |
CSE 1004A |
Wednesday |
5:00—6:30 PM (starts today!) |
CSE 1004A |
Thursday |
2:30—4:00 PM | CSE 1004A |
Thursday |
7:00—9:30 PM | CSE 1004A |
Each lab session will be run by a teaching assistant (TA). Your TA is a graduate student in the Department. During a lab session, the TA will first show you how to solve a programming problem and then spend the rest of the lab helping individual students with a second programming problem (an eCheck) that you submit for marking by the specified due date.
The lab PCs run a Linux (CentOS) operating system. We expect that most students will not have previously used Linux. It is very important that you attend the labs to familiarize yourself with the lab computing environment so that you can effectively write the lab tests.
Tentative test dates
eCheck |
approx 1 per week |
10% |
Labtest |
in Lab week of Sep 30—Oct 6 |
10% |
Midterm (written) |
Sunday Oct 25 |
15% ??? |
Midterm (labtest) |
Sunday Oct 25 |
15% ??? |
Labtest |
in Lab week of Nov 11—Nov 17 |
15% |
Exam (written) |
set by Exam Office |
17.5% ??? |
Exam (labtest) |
set by Exam Office |
17.5 % |