CSC202 Advanced Programming Techniques, Smith College, Computer Science Department, Fall 2016


Advanced Programming Technique

Classes: Tuesday – Thursday 1.00 pm – 2.50 pm

Location: Ford Hall 345

Instructor: Dr. Şadi Evren ŞEKER (Office: Ford Hall 252)

Office Hours

  • Wednesday, 11.00 -AM to 12.00 or 3.00 – 5.00 PM
  • Other times by appointment/as available
  • Lunch meetings available by request for small groups


Web Site:

YouTube : will appear soon (after each class I will try to shoot youtube videos (not a promise, I will do my best))

Introduction:  Advanced programming techniques course will cover topics in developing reliable software other than programming, including testing, bug finding, verification, and methodologies for constructing robust code. The emphasis is on modern technology for developing reliable software at reasonable cost.

The course will be offered for different numbers of units, depending on whether students plan to do the homework assignments. The assignments will focus on applying these techniques to realistic software systems. Students will also prepare a real life project as a group work.

Outcomes of the Course

Possible outcomes expected from the course:

  1. Appreciate the wider engineering issues that form the background to developing complex and evolving software-intensive systems.
  2. Plan and deliver an effective software engineering process, based on knowledge of widely used development lifecycle models.
  3. Employ group working skills including general organization, planning and time management and inter-group negotiation.
  4. Capture, document and analyse requirements.
  5. Translate a requirements specification into an implementable design, following a structured and organised process.
  6. Make effective use of UML, along with design strategies such as defining a software architecture, separation of concerns and design patterns.
  7. Formulate a testing strategy for a software system, employing techniques such as unit testing, test driven development and functional testing.
  8. Evaluate the quality of the requirements, analysis and design work done during the module.
  9. Managing software project from scratch to end.
  10. Getting knowledge of group works.


  1. Software Engineering, 6th edition, Ian sommerville, Addison-Wesley, ISBN 0-201-39815-X.  (A Web home page for the book is available at )

Supplementary Texts:

  1. Complete Reference: Java, 7th edition, 2007. Herbert Schildt, McGraw Hill Osborne, ISBN: 9780072263855.
  2. Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley Professional Computing Series by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, first edition, ISBN: 0201633612.
  3. Applying The UML and Patterns by Craig Larman, Prentice Hall, ISBN: 0131489062
  4. Refactoring: Improving the Design of Existing Code, Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts, 1st edition, Addison-Wesley Professional, ISBN: 0201485672.
  5. Software Engineering: A Practitioner’s Approach, Roger Pressman


    • 50 % Group Projects
    • 50 % Individual Projects

Projects Grading

  1. Requirement Specifications 5%
  2. Analysis Document 5%
  3. Design Document 10%
  4. Prototype 5%
  5. Class Presentation / Demo 15%

Quality Control Sheets,

Peer Evaluation Sheets

Tentative Course Outline

5 – System models (Oct 4)PPTIntroduction to Database Programming, SQL and Connection from JSP to Database with netbeans (Oct 6)
Quick Start to Web Applications with DatabaseChapter 7

Lectures Sections in book
Num/Name PPT Practice / Homeworks Readings
Presentation of the course (Sept 8)  PPT
1 – Introduction (Sept 13) PPT Projects Chapter 1
2 – Computer-based system engineering X Chapter 2
2 – Software processes (Sept 15) PPT Project Proposals (Due Date Sept 22) Chapter 3
3 – Software requirements (Sept 20) PPT Web Programming, Introduction to JSP and Java Web Forms with Netbeans (Sept 22)

Quick Start to Web Applications

Chapter 5
Rading: Computerized Argument Delphi
Template: IEEE SRS
4 – Requierements engineering processes (Sept 27) PPT Database Basics and SQL (Sept 29)
Introduction to JavaDB
Get Started with JavaDB
Chapter 6
5- Review  (Oct 4)

You can download the project codes from this link.

PPT Introduction to Database Programming, SQL and Connection from JSP to Database with netbeans (Oct 6)
Quick Start to Web Applications with Database
Chapter 7
6-No Class (Oct 11)

Web Application with JavaDB from the class

X  Database Connection (Oct 13), Due date of Project Phase #1 

Java Web Application with Database

Designing the Application, MVC and Data Models

7 -Object-oriented design and UML (Oct 18) PPT Designing an Application UML and generating corresponding Java code. Click to download the UML, that we dit at the class (Oct 20) Chapter 7
8 – Design Patterns (Oct 25) PPT Sample Application with Design Patterns (Oct 27) Chapter 7
9 – Java Web Coding with Data Tables (Nov 1) X  Web Application for Modify / Delete and Insert new records to the database (click to download) — We have had problems with modify
10 -User and Task oriented Design and Use Case Diagrams (Nov, 8) PPT Lab Work (Nov,10): Java Server Faces (JSF) sample database web site creation (database Entity Beans, JSF pages from Entity Beans and Sample Random Number Game) Chapter 6
11 – Agile Software Development (Nov 15) PPT


 Due Date of Projects Phase #2 (UML and Deployment Diagrams) (Nov 14) Chapter 3
12 – SCRUM PPT Due Date of Projects Phase #3 (Use Case Diagrams and Use Cases) (Nov 21) Chapter 14
13 – Software testing (Dec 1) PPT Project Meetings (Time of meetings will be scheduled later, and I will try to give feedbacks to each of the group and individual projects about the UML diagrams).

Sample code for whitebox testing.

Chapter 20
14 – Software cost estimation (Dec 6) PPT Chapter 23
15 – Review and Projects Discussion (Dec 8) Final Presentations and Project Submissions (Dec 13 and Dec 15)


Announcements in classes have priorities.
Please fill the knowledge card attached here and send it back via e-mail. Click to download knowledge form.

Project Proposals: Please send a brief project proposal for individual projects. Also another proposal with brief description of your group project and your group members via e-mail until Sept. 22 (Thursday).

Non-Grading Assignment #1 : Prepare an HTML web form with 3 text boxes and 4 buttons. For each of the button put one of the basic operations (like multiplication, division, summation or subtraction) and use 2 of the text boxes to read integer inputs from the user and calculate the result in a Java Application, finally print back the result into the third text box.

Meeting Schedule for teams (Sept. 28): 

15.00 Genius or Idiot (2)

15.15 Dawes Dining House (1)

15.25 Wombats (4)

15.45 Machine Learning in Interactive Art (2)

16.00 Help at Smith (2)

16.15 Darpan and Kallyn (2)

16.25 Any project,which is not listed above.

Please note that, there is a possibility of slight shifts depending on the projects. Also the individual projects of each group member will be discussed during the sessions. If you can not find your name, your project name or group name, probably there is a problem while receiving your email, so you can come at 16.25. Also if you don’t have a project group yet or you want to merge with another group, the numbers between parenthesis indicates the number of members, so you can ask any group for joining (it might be a good idea to come at their session and meet with them and ask for joining).

User Login, Sample Code (done in class) for Database Connection , Database Abstraction Layer, JSP and HTML Web Pages and Java Application Layer behind. (click to download)

Deadline for Project Phase #1 is Oct 13, Thursday, You are asked to return an SRS document and an SDD. For SRS you can use the template on this web page. For SDD you can prepare a free format document, which is holding your data flow diagrams (in all three levels), use case diagrams, UML Class diagrams and sequence diagrams (please refer to course content at Sept 27 and Oct 4).

UPDATE: For project phase #1, just prepare an SRS document (enrich it with, DFD or Use Case diagrams). (You dont have to prepare SDD or UML or flow charts or sequence diagrams (of course you can add them but it is not necessary)).

UPDATE #2: Project phase #1 deadline is extended for 2 more days (new due date is Oct 15). All the submissions during the extended days will be graded 100% (so no late submission penalty) and any submission before the original due date will get an extra 20% bonus for the fairness. If you have already submitted, it will be graded over 120, if you want to work on your submissions and submit it again, the latest version will be graded over 100%.

Deadline for Project Phase #2 is Nov, 14. In this phase, return the UML diagram of your group and individual projects. Also provide a deployment diagram if your system is interacting with any other system(s).

Deadline for Project Phase #3 is Nov, 21. In the phase #3, please draw Use Case diagrams and give the use cases related to your projects.

Meeting Schedule of Teams (Nov 30)

  • Wombats (13.00) -> (17.00)
  • Smith Dining (13.30) -> (14.40) * you can come at 14.40 but you need to wait for your friends to finish because of the conflict.
  • SCalendar (14.00)
  • Art Generator (14.30)
  • Help at Smith (15.00)
  • Trivia (15.30)
  • If your group name does not appear in the list, please come after 16.00 (or email me for another time slot)
  • If, somehow you can not attend to the appointment for the announced time slot, just let me know and I can assign another time slot for you.

Project Grading and Due Dates

  • Individual Project Presentations Dec 13.
  • Group Project Presentations Dec 15.
  • Grading of Projects
    • Report 40% (Submission due date for individual projects Dec 12 and for group projects Dec 14)
      • Your Requirements (you can submit SRS for this part)
      • A brief story
      • Use scenarios
      • UML
      • Use Case Diagrams
      • Deployment diagram (if you have connection to other systems)
      • Functionality / Feature list after your design.
    • Working Software and Demo 30%
      • 10 minutes demonstration after/during the presentation and submission of your codes via e-mail
    • Presentations 30%  (about 15 minutes for presentation + demo and 2-3 minutes for questions) (Individual projects presentation date Dec 13, Group projects presentation date is Dec 15).
      • Briefly explain your projects to everybody (probably your friends will have no idea about your project)
      • Explain your assumptions and your solutions to the problems.
      • Give a use scenario
      • Demonstrate how you solved the problem and run your project.
    • Questions:
      • Some classical questions, you are expected to address in your reports and presentations (these are some generic questions to give an idea, do not feel limited to these questions):
        • How did you manage the project? Did you use any methodology (like agile or prototype etc?)
        • How did you test your software?
        • How did you manage to divide the work load between group members?
        • How did you updated all group members about the progress? Did you have any difficulties about group work?
        • During the project development, have you ever faced any difficulty? How did you solved the problems?