BILKENT UNIVERSITY
CS 102 Algorithms and Programming II, Section 1, Summer '09
(8:40-11:30 T and Th, EB202; classes 23 June B206)
Labs (13:40-16:30 M and W, B303-304)

CS 102 Algorithms and Programming II, Section 4, Summer '09
(13:40-14:30 M and W, EB204; classes 22-24 June BZ04)
Labs (13:40-16:30 T, B201-202 and Th, B305-306)


Dr. Tugrul Dayar
Department of Computer Engineering, EA521
e-mail: tugrul@cs.bilkent.edu.tr
Office Hours: (11:40-12:30 T and Th (or if this is not possible, by appointment from 1981)


Lab Instructors:

Mehmet Ali Abbasoglu [email] 
Office Hours: 10:30-12:00 T and F and other times by appointment using email

Murat Ak [email]                                                                                       
Office Hours: 10:30-12:00 T and F and other times by appointment using email.

Berkay Aydin [email]
Office Hours: 10:30-12:00 T and F and other times by appointment using email.

Semih Energin [email]
Office Hours: 10:30-12:00 T and F and other times by appointment using email.

Tayfun Kucukyilmaz [email]
Office Hours: 10:30-12:00 T and F and other times by appointment using email.

T. Sercan Pekin [email]
Office Hours: 10:30-12:00 T and F and other times by appointment using email

Akif Burak Tosun [email]
Office Hours: 10:30-12:00 T and F and other times by appointment using email.

Volkan Yazici [email]
Office Hours: 10:30-12:00 T and F and other times by appointment using email.

Assistant's Web Page for Projects and Assignments


Objectives:

·        Undertake real-world design task

·        Work as a member of a team

·        Practice communication in written and oral form

·        Learn more programming techniques

·        Practice independent learning


Course Description:

CS102 gives you an opportunity to put the basic computer literacy, design and programming skills you learnt in CS101 into practice. The course has two components. The first is simply a continuation of CS101 aimed at expanding the range of techniques you have available to solve problems. These new techniques will be presented in formal lectures and, as in CS101, you will be given lab. assignments designed to let you practice them. Material in this section includes recursion, files and some basic data structures, plus a little about object-oriented programming, event-driven architectures, searching and sorting. There will be written exams on these topics. The second component of the course is a summer school-long design project. The ultimate goal is to produce a commercial-quality program which is fully documented, bug-free and easy to use. You will work in groups, each group selecting possibly a different project. You will be expected to prepare a number of written reports and to present these in class. These documents will include basic requirements, specifications, detailed design and user manuals. Groups will discuss each other's work and offer suggestions and criticisms on it so as to help improve the final product. Projects will be undertaken using Java. Students will be expected to display creativity and an ability to learn independently.


Textbook:

Java Software Solutions: Foundations of Program Design, John Lewis & William Loftus, 4th edition, Addison-Wesley, 2004.

Absolute Java, Walter Sawitch, 3rd edition, Addison-Wesley, 2007.


Supplementary Course Material:

Java Software Solutions (Author's) Web Site: Contains useful material like lecture slides, programming examples, etc.

Java Software Solutions (Addison-Wesley (Publisher's)) Web Site: Contains useful material like lecture slides, programming examples, etc.


Course Outline:

  • Writing classes (Ch.4 of textbook, review, Week 1)
  • Conditionals and loops (Ch.5 of textbook, review, Week 1)
  • Object-oriented design (Ch.6 of textbook, review, Week 2)
  • Arrays (Ch.7 of textbook, Week 2)
  • Inheritance (Ch.8 of textbook, Week 3)
  • Polymorphism (Ch.9 of textbook, Weeks 4 and 5)
  • Recursion (Ch.11 of textbook, Week 5)
  • Exceptions (Ch.10 of textbook, Week 6)
  • Collections (Ch.12 of textbook, Week 7)

Course Rules:

·        Attendance to the lectures and laboratory is mandatory. Although not listed in the grade percentage I may give quizzes randomly. I may assign a percentage of grading to quizzes and attendance. You may fail the course if the attendance is below a certain percentage. Those who fail to attend more than one lab without any excuse (a valid medical report, etc.) will fail the course.

·        You should get at least 30 / 100 from the final exam and from the project to pass the course.

·        There will be a course project that should be done in groups of five students. You should choose a project from the following list or you can come up with your own project topic. Project groups should do the labs together since some part of the project work will be done in the labs. You should arrange your project /lab groups accordingly. You can also arrange project groups with students from other sections. In this case, you should arrange your lab schedule with the lab instructor accordingly. It is NOT possible to attend the labs in different sections for the students belonging to the same project group, since some part of the projects will be done in the labs.

·        You should follow the steps of the software life cycle for your project. That is, you will prepare a software requirements specification report, a user interface design report, a detailed software design report, complete the implementation (and make a demonstration). You should select your project topic until 15-16 June 2009 (depending on your lab schedule) and send an e-mail to Semih Energin (and also the lab instructors of your section) specifying your project group members and project title. Specify CS102 in the subject of your e-mail. You will complete your project requirements specification report in the labs on 22-23 June 2009, Monday-Tuesday (depending on your lab schedule). You are expected to interact with your lab instructors in the lab and finalize your requirements specification reports. Detailed information about how to prepare a requirements specification report can be found in Requirements Specification Report .You will complete your user interface design report in the labs on 8-9 July 2009, Wednesday-Thursday (depending on your lab schedule). You are expected to interact with your lab instructors in the lab and finalize your user interface design reports. Detailed information about how to prepare a user interface design report can be found in User Interface Design Report. You will complete your detailed design stage in the labs on 15-16 July 2009, Wednesday-Thursday (depending on your lab schedule). You are expected to interact with your lab instructors in the lab and finalize your detailed design stage reports. Detailed information about how to prepare a detailed design report can be found in Detailed Design Stage. You will complete the implementation of your projects in the remaining labs. Some tips about the implementation of projects can be found in Implementation Stage. Each project group will make an approximately 12 minutes project presentation (you should organize your presentation as10 minutes presentation and 2 minutes questions) of their projects on 24 July 2009, Friday at Mithat Coruh Ampthitheatre. Each student must attend the presentations and demos in his/her section, although s/he may also attend the presentations and demos of other sections. If a student fails to attend the presentations or the demos, s/he will fail the course directly. The schedule will be as follows: Section 1 9:00-11:30, Section 2 11:30-14:00, Section 3 14:00-16:30, Section 4 16:30-19:00. You must upload your presentations and demos to the respective computers provided by the lab instructors beforehand. You cannot change computers during the presentations due to tight schedule. In your presentation, you should mention about the requirements of your project (what are the functionalities expected), your user interface design, high level class design of your project (use class diagrams), details of the important methods (you can use pseudo-code to explain them), and implementation details, like the language and data structures you used. 

·        Each project group must submit a CD containing three directories (until 25 July 2009 Saturday) to the lab instructors before the final exam. The CD must be clearly labeled and put in a CD envelope (which should also have  a label indicating group members, the name of the project, etc.). It must include three directories with the following content: Documentation (Requirements Specification Report, User Interface Design Report, Detailed Design Report), Implementation (Source Codes, Executables, Readme.txt explaining how to install and run your program, required libraries, databases, etc.), Presentation (Powerpoint file).

Project List


Grading:

  • Lab (20%)
    • Lab 1 (Wednesday, June 10) Section 1 B303-304, (Thursday, June 11) Section 2 B305-306
    • Lab 2 (Wednesday, June 17) B303-304, (Thursday, June 18) Section 2 B305-306
    • Lab 3 (Wednesday, June  24) B303-304, (Thursday, June 25) Section 2 B305-306
    • Lab 4 (Wednesday, July 8) B303-304, (Thursday, July 9) Section 2 B305-306
    • Lab 5 (Wednesday, July 15) B303-304, (Thursday, July 16) Section 2 B305-306
  • Midterm (20%, 6 July 2009, 17:30, EB101-104,201). The exam will be closed books/notes. You can use a double-sided hand-written A4 size cheat sheet, but cannot exchange your cheat sheet with others’ during the exam.  Do not bring cellular phones to the exam. The midterm will be from Chapters 4-8.
  • Project (30%)
  • Final (30%, 27 July 2009, 10:00, EB101-104,201-204). The exam will be closed books/notes. You can use a double-sided hand-written A4 size cheat sheet, but cannot exchange your cheat sheet with others’ during the exam.  Do not bring cellular phones to the exam. The exam will be from Chapters 4-12.)

Scores

Section 2’s course home page

Section 3’s course home page