CS 102 Algorithms and Programming II

Objectives

o         Undertake real-world design task

o         Work as a member of a team

o         Practice communication in written & oral form

o         Learn more programming techniques

o         Practice independent learning!

General

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 programming assignments designed to let you practice them. Material in this section includes inheritance and polymorphism, recursion, file input and output, object-oriented software design, graphical user interfaces, event-driven programming, sorting and searching, some basic data structures, and exceptions.

There will be written exams on these topics. The second component of the course is a semester-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 a different project. You will be expected to prepare a number of written reports and to present and demonstrate your project. 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.


Important Announcements


The first Homework session (Homework 0) on GitHub will be at the second week lab session (25 September 2024, Wednesday, 13:30-17:20) (Lab Classes: B-201 and B-202).


CS102 Moodle Page (Announcements, Projects and Assignments)


Course Schedule:

o         Section 1 (Uğur Güdükbay): Tuesday 13:30-14:20, 14:30-15:20 (B-Z06), Friday 08:30-09:20 (Spare Hour), 09:30-10:20 (B-Z06),

Laboratory Schedule:

o         Section 1 (Uğur Güdükbay): Wednesday 13:30-17:20 (Rooms: B201-B202)


Course Rules:

1.     Grading (Tentative):

1.     25% Midterm

2.     25% Final

4.     15% Laboratory Assignments

3.     25% Project

3.     5% Quizzes

3.     5% Homeworks

2.     Those who get below 30 out of 100 from the midterm and below 75 out of 100 from the programming (lab) assignments will get an FZ grade regardless of their other grades. Not to get an FZ grade, each student is expected to make a reasonable contribution to each stage of the project. The students who got an FZ grade cannot take the final exam.

4.     Attendance to the lectures and Laboratory sessions mandatory.

5.     You will fail the course if the attendance is below a certain percentage.

6.     Those who fail to attend more than one Laboratory session without any excuse (a valid medical report, etc.) will fail the course.


Project Details:

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 group members should do the prograaming assignments according to the same schedule since some parts of the project work will be completed according to the same schedule. You should arrange your project groups accordingly.

Project Topics and Requirements can be reached from Course Moodle Page

You should follow the steps of the software life cycle for your project. i.e., You will prepare Software Requirements Specification Report, User Interface Design Report, Detailed Software Design Report, complete the Implementation (make a demonstration).

Project Presentation and Demonstration

You should make your presentation and demo in 20 minutes (15 minutes presentation including questions and 5 minutes demonstration). So, it should be an overview of your project, rather than the details. You should structure your presentation as follows. Your presentation may include other issues that you may want to present but it should contain at least these.

  1. Project Description. You should define the problem and give motivation for undertaking this project.
  2. Requirements, Expected Functionality, Target User Groups. Give a graphical overview of the functionality using use-case diagrams.
  3. User Interface Design, Database Design, Network Design. Depending on the nature of your project, you should give a brief overview of the user interface design, database design, how you use a database, network design, if applicable.
  4. System Analysis and Design. You should give an overview of your analysis and design. You should describe your design with UML Class diagrams. It should not contain too much details so the diagrams are readable. Your UML class diagram should only contain important instance variables and methods.
  5. Low Level Design. You should describe the important data structures and give pseudo-code algorithms for important methods.
  6. Conclusion and possible future extensions.
  7. It is not suitable all of the 5-6 students make the presentation because it is very short. 1-2 students make the presentation. We may ask questions (2 minutes for the questions) to each student to understand their contribution.

Demo Preparation

Your demo should be prepared beforehand to demonstrate the most important features of your project. Just write down the steps of your demo and use it for the demonstration. Demo should be completed in five minutes.

Further Details:

o    Schedule

(Select "Offerings", "Computer Engineering", CS102 (Your section), and "Course Detail".

o    Syllabus

(Select "Offerings", "Computer Engineering", CS102 (Your section), and "Syllabus".

Textbooks

o    Required: Cay S. Horstmann, Big Java: Late Objects, Enhanced eText 2nd edition. Cay S. Horstmann, 2016, Wiley. Wiley - Students Resources, Wiley Student Companion Site: Contains Useful Materials, including Source Codes, Video Examples, Worked Examples, and so on.

o    Recommended: John Lewis and William Loftus, Java Software Solutions, 9th Edition, Addison-Wesley, 2017. Pearson - Companion Web Site: Contains Useful Materials, like Video Notes, Programming Examples Source Codes, and so on.


Last updated: January 26, 2024