Course Announcements (Summer 2009)
Index of Announcements:
May 05, 2009: First week announcement
May 07, 2009: Install Java from the Sun Microsystems site
May 08, 2009: Course textbook
May 18, 2009: Course schedule
May 26, 2009: On posting next week materials
June 02, 2009: On homework for "advanced students"
June 06, 2009: A typo in Homework 3
June 09, 2009: Course information on Blackboard
June 17, 2009: Midterm exam is approaching
June 22, 2009: Discussion forum is made available in Blackboard
June 30, 2009: Changes to the course schedule
July 10, 2009: Changes to Homework Assignment 7
July 29, 2009: Final exam is approaching
May 05, 2009
Welcome to MET CS232 Introduction to Computer Science with Java
at Boston University. This is an accelerated course, and this is why
you should do a lot of reading, especially at the beginning of the course.
Ideally (if you are reading this announcement before the start of
the semester) by the first class you should have read the first two
chapters of the textbook. Some of this material, of course,
might be already familiar to you, and you could get away with
reviewing rather than studying these chapters.
By the start of the second class, you should have read Chapters 3 and 4.
If you have hard time understanding some of this material, prepare
your questions and ask them in class. Do not sit back: if
you do not clarify these questions, this might impede your further
progress later in the course.
Make sure you start your homework right away. Do not postpone it until
the last day before it is due. Do not email your homework to the professor,
turn it in as a hardcopy at the start of each lecture.
In this course, we are going to use Java 6. For free download, go to the sun Microsystems web site
http://java.sun.com/javase/downloads/index.jsp
and select the latest update for Java SE Development Kit (JDK) . Most likely, it will be JDK 6 Update 13.
As long as it is JDK 6, the update number does not matter. Make sure that you do not download packages with additional components – you will not need them for the course.
Download Java SE 6 documentation from the same page.
As your development environment for the course, use an evaluation copy of TextPad. It is much simpler than
other development environments (Eclipse, BlueJ and others) and it is sufficient for writing programs for this course.
Make sure that you install TextPad only AFTER you install Java. Download TextPad from:
http://www.textpad.com/download/index.html
To compile Java code, pressCTRL-1. To run the program, pressCTRL-2. this is all you should
know about TexPad user interface.
Due to a breakdown in departmental communications, the initial version of the syllabus specified the
course textbook which was different from the one ordered by the BU bookstore.
The textbook ordered by the BU bookstore is:
Liang, Introduction to Java Programming: Comprehensive Version, 7th edition, Prentice Hall,
2009, 1328 pp.
This is the textbook which we will use in this course. The syllabus and the schedule have been modified accordingly.
The course schedule has been modified slightly to distribute reading assignments more evenly throughout the course.
The material covered in the course remains the same.
I posted the PowerPoint slides for the next lecture and updated the homework assignment
file. Please print them and bring to class on Thursday.
Keep in mind that the next homework assignment is posted by appending the text of
the new assignment to the previous text rather than by replacing it. This is why when
you open the homework assignment file, you see Homework Assignment 1.
Do not be misled - the next assignment is at the end of the file.
If you have any questions or problems, please do not hesitate to contact me.
Starting today, I am experimenting with posting homework assignments in two versions, one
is the required minimum, and another is optional "for advanced students" only. The second
version is for making your homework more interesting and challenging, not for getting
additional credit. If you struggle with the required minimum, do not do the optional part,
but concentrate on doing the mandatory part.
If you have questions or problems, please contact me.
There is a typo in the description of method start() in exercise (b). It says that
"If the sum is 7, method start() displays "You win" and returns 0 to signal the end
of the game to its caller main()."
In fact, it has to say:
"If the sum is 7 or 11, method start() displays "You win" and returns 0 to signal the end
of the game to its caller main()."
I posted a corrected file instead of the original one. Thank you for those students who
paid attention.
This course information is now available at the Boston University Blackboard System
at http://blackboard.bu.edu. To login, use your
BU user name and Kerberos password. To see the latest versions of the course documents,
go to Course Documents in the course menu (other folders are currently empty).
If you prefer to see my comments on your homework typed rather than handwritten, you
can upload your submission using either Upload Assignment page or Digital Dropbox page.
Make sure that you paste everything in the same file. Before submitting, print and
inspect your submission and make the changes to improve its readability.
If you think that learning Blackboard is a hardship and prefer to submit hardcopy,
feel free to do so.
The midterm exam is approaching. The exam covers the first seven chapters of the
textbook (with the exception of formatted output, multidimensional arrays,
StringBuffer and StringTokenizer classes and the material labeled as optional).
To prepare you to the kind of questions you are going to answer during the exam,
I am posting a set of practice questions. The actual exam will be almost three times as
long, but it will contain the same kinds of questions - reading code, answering questions
about code and writing code. When answering questions about code, make sure that
you identify the issues behind the questions and not simply "play the computer."
Unlike previous homework assignments, the assignment that I am posting today is due
in two weeks rather than the next week. Of course, completing the assignment before
the midterm exam will help you do well on the exam. However, I am not making
it mandatory - if you choose to postpone turning this homework in until the week
after the exam, there will be no penalty.
Before the start of the exam I will spend 20-30 minutes answering your questions
(if you have any), and the rest of the class time will be allocated for the exam.
The exam is open book/notes - this means that you can use them for quick reference
and not for studying during the exam.
Some students inquired whether a discussion board could be made availble in
Blackboard. I am a novice user of Blackboard myself, so I am not 100 percent
sure how to manage it, but it seems that I did create a new discussion board.
Feel free to use it for class communications.
Again, it is an experimental feature and as such it is not mandatory. There
is no required minimum of messages to post. Still those who want to use
this feature should feel free to do so.
The midterm exam results are mostly good, and some are even very good. However,
they are not perfect. To improve the coverage of
Java concepts for the remainder of the course, I am changing the course
schedule somewhat. We will discuss inheritance and interfaces during two
lectures instead of just one. The number of lectures devoted to the use of
Java library classes for building graphical user interfaces changes from two
to one. Do not worry, you will still see a lot of GUI library classes.
This change will allow us to pay more attention to fundamental programming concepts.
The new schedule is posted on the course web page and on Blackboard.
In Homework Assignment 7, you are asked to create an array of Student and Faculty
objects and pass this array to methods that (a) print array components, (b) find
and print the maximum component in the array, and (c) sort the components of the
array. This requires the capability to compare a Student object to a Faculty
object. This, in turn, would make the compareTo() method too complex.
To avoid this complexity, implement the compareTo() method in classes Student and
Faculty so that it is capable of comparing the target object ('this' object) with
an object of the same type only. Student objects should be compared on the 'major'
field alphabetically, Faculty objects should be compared on the 'rank' field
alphabetically. If an attempt is made to use compareTo() to compare objects of
different types, the program should terminate at run time.
In the client class (e.g., Homework) implement methods printList() and sort() to
print and to sort a parameter array of either Faculty or Student objects, and method max() that prints
the first maximum object in its parameter array (of either Faculty or Student objects).
When sorting, if two objects have the same value of the sorting field ('major' for
Student objects, 'rank' for Faculty objects), do not change the order of these
objects in the array and do not compare them on the 'name' field (this is left for
advanced students to struggle with).
In client's main(), create two arrays (not ArrayList objects), one should contain
Student objects and another should contain Faculty objects. Make sure that the
'major' field of Student objects has meaningful values. Pass these two arrays as
arguments to method printList(), max(), sort() and again printList(). Define these
arrays so as to prevent compareTo() in Student and Faculty from blowing up even if
you try to insert objects of different types in these arrays.
Demonstrate the versatility of methods printList(), max() and sort() by passing an
array of String objects to these methods and also by passing an array of Integer objects.
I have updated the homework file on the people.bu.edu course page and on Blackboard.
If you have any questions, please do not hesitate to contact me.
The course is approaching its last week. We covered most of the topics that had
to be discussed in the course, and the final exam is going to reflect this.
The exam will include questions on the material from chapters 8-22 of the
textbook with the exception of chapters 14 and 20.
Similar to the midterm exam, I will post a set of practice questions. Hopefully,
they will help you to prepare for the kind of questions you are going to answer
during the exam. The final exam will contain fewer questions than the midterm,
but the questions will be more substantive, will require more explanations and
will involve writing complete programs. Similar to the midterm exam, make sure that
you identify the issues behind the questions and not simply "play the computer."
The exam is cumulative - there will be no explicit questions related to the
material covered in chapters 1-7. However, knowledge of this material will help
you to deal with the material of the second part of the course. Tak this into
account when planning your preparation for the exam.
The homework assignment that I am posting today is due in one week, on the day
of the final exam. This means that if you submit it as hardcopy, I will not
return the graded assignment to you. However, if you upload it to Blackboard
on Tuesday or Wednesday, I will try to upload the graded homework on Thursday
before the exam.
Similar to the midterm, I am planning to spend the first 20-30 minutes of the exam
answering your questions if you have any. If you do not have questions, this time
will be added to the exam time. The exam is open book/notes - this means that you
can use them for quick reference and not for studying during the exam.
It was nice to teach you during this summer, and I wish all of you all the best
in your further academic and professional persuits.
 
Back to the MET CS232 Home Page
Back to the Shtern's Home Page