1 / 41

CS1101: Programming Methodology comp.nus.sg/~cs1101x/

CS1101: Programming Methodology http://www.comp.nus.edu.sg/~cs1101x/. Java Appreciation. Java Appreciation. OR What’s In Store In CS1101?. by Aaron Tan 24 July 2009, 10am, LT16. Exercising Your Choice. CS1101 or CS1101S. Java. Scheme. CS1101: Course Description.

bona
Download Presentation

CS1101: Programming Methodology comp.nus.sg/~cs1101x/

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CS1101: Programming Methodologyhttp://www.comp.nus.edu.sg/~cs1101x/

  2. Java Appreciation Java Appreciation OR What’s In Store In CS1101? by Aaron Tan 24 July 2009, 10am, LT16

  3. Exercising Your Choice CS1101 or CS1101S Java Scheme

  4. CS1101: Course Description “This module introduces the fundamental concepts of programming from an object-oriented perspective, and is perceived as the first and foremost introductory course to computing.” No prior experience is assumed.

  5. CS1101: Objectives • Learning about programming methodology and principles, using the object-oriented model. • Outcomes: • Know how to solve simple algorithmic problems. • Know how to write good small programs. • JAVA is merely a tool. • This is not a course on just JAVA alone!

  6. CS1101: Your Friendly Lecturers

  7. CS1101: Lecture Groups • You will be pre-allocated your seminar group and discussion group. • All groups cover the SAME syllabus, and have common tests. • Students in all groups are graded together as a whole.

  8. Module Website Very important! • http://www.comp.nus.edu.sg/~cs1101/

  9. IVLE Watch out for announcements • http://ivle.nus.edu.sg Participate in the forum

  10. Workload (5 MCs) • Lectures: • 3 hours/week in a lab setting. • Discussion sessions: • 2 hours/week in a lab setting. • Continual assessment: • Take-home lab assignments • Sit-in lab tests • Mid-term test • Practical Exam

  11. Skills Set (1/2) Java constructs Problem solving Program

  12. Skills Set (2/2) • Java constructs (transferable skills) • Class and objects; types and variables; control constructs (selection, repetition); APIs; arrays; exceptions; applications (searching, sorting). • Problem solving (more transferable skills) • Programming methodology (development cycle, top-down design, modularity); testing and debugging; abstraction. • Others • Software tools (editor, compiler, debugger, CourseMarker); mathematical maturity.

  13. Method body A Java Program (Hello.java) Comments // Display a message. public class Hello { public static void main(String[] args) { System.out.println("Hello World!! :-D"); } } Class name Method name Output

  14. A Java Program (Welcome.java) API package // Author: Aaron Tan // Purpose: Ask for user’s name and display a welcome message. import java.util.*; public class Welcome { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("What is your name? "); String name = scanner.next(); System.out.println("Hi " + name + "."); System.out.println("Welcome to CS1101!\n"); } } Creating a Scanner object Input An object of class String

  15. Object-Oriented Programming (OOP) • The fundamental OOP concept: An object-oriented program uses objects. • Demo on BlueJ: • Illustrate concepts of object and class • Creation of objects • Sending messages to objects

  16. Objects and classes • Object-oriented language • Models real-world objects you find in everyday life. • Objects • Represent ‘things’ from the real world, or from some problem domain (“that red 1200cc Honda car”, “my 2-year old Persian cat with a short tail”). • Have name, state (set of values for its attributes) and behaviors (via methods). • Perform actions or interact by sending messages. • Classes • Represent all objects of a kind (“car”, “cat”). • A class is a model/blueprint/prototype for an object. An object is an ‘instance’ of a class. Many instances (objects) can be created from a single class.

  17. Problem Solving (1/4) • Problem  Algorithm Program • Task 1: Anagram • Text that is formed by rearrangement of letters. • Examples: • Dear = • Astronomer = • The Eyes = • The Morse Code = • A Decimal Point = Read Moon Starer They See Here Come Dots I’m A Dot In Place

  18. Problem Solving (2/4) • Task 2: Maze

  19. Problem Solving (3/4) • Task 3: Sudoku

  20. Problem Solving (4/4) • Task 4: Mastermind • Sinks: Correct colour, correct position • Hits: Correct colour, wrong position Secret code Sinks Hits Secret code Sinks Hits 1 1 1 0 Guess #1 Guess #1 1 2 0 1 Guess #2 Guess #2 2 2 1 0 Guess #3 Guess #3 4 0 1 1 Guess #4 Guess #4

  21. Think About It • This set of slides will be available at • http://www.comp.nus.edu.sg/~cs1101 • Administrative and registration issues • Indicate your choice on this websitehttp://ntsa.comp.nus.edu.sg/freshmen/ • You will be pre-allocated your seminar group and discussion group. • Nonetheless, do attend the Course Briefing – important! • LT17, 29 July, Wednesday, 9am – 12nn • If you take CS1101, you will get a copy of “This CS1101 Handbook”

  22. This CS1101 Handbook

  23. Have a great time in School of Computing!

  24. BlueJ • Designed at Monash University, Australia. • Runs on top of Sun Microsystems’ Java Development Kit (JDK). • Provides an Integrated Development Environment (IDE) with editor, compiler and debugger. • Simple user interface, easy to use. Do not need to write complete application. • Refer to course websitehttp://www.comp.nus.edu.sg/~cs1101/(click on “Resources…”  “Online”) • Download BlueJ and its documentation.

  25. BlueJ: Creating objects (1/4) • Choose example shapes. • Classes: Square, Circle, Triangle, Canvas.

  26. BlueJ: Creating objects (2/4) • Creating a new object Right click on Circle class and choose new Circle() to create a new Circle object. Circle() is a constructor.

  27. BlueJ: Creating objects (3/4) • Creating a new object

  28. BlueJ: Creating objects (4/4) • Creating a new object A new Circle object circle1 is created.

  29. BlueJ: Calling methods (1/3) • Methods implement the behavior of the objects. Right click on the circle1 object and select the makeVisible() method.

  30. BlueJ: Calling methods (2/3) • Methods implement the behavior of the objects. Experiment with other methods: makeInvisible(), moveDown(), moveRight().

  31. BlueJ: Calling methods (3/3) • Methods with parameters: • changeColor(newcolor), changeSize(newDiameter), moveHorizontal(distance).

  32. BlueJ: State (1/2) • State: the set of values of all the attributes of an object. Right click on the circle1 object and select the Inspect function.

  33. BlueJ: State (2/2) • Objects of the same class have the same fields/attributes. But each object may have it own set of values for its attributes. State of circle1 object. Fields: int diameter int xPosition int yPosition String Color boolean isVisible

  34. BlueJ: Source code (1/8) • Right click on class Circle and select “Open Editor”. import java.awt.*; import java.awt.geom.*; /** * A circle that can be manipulated and that draws itself * on a canvas. * @author Michael Kolling and David J. Barnes * @version 1.0 (15 July 2000) */ public class Circle { private int diameter; private int xPosition; private int yPosition; private String color; private boolean isVisible;

  35. BlueJ: Source code (2/8) // Create a new circle at default position with default color. public Circle( ) { diameter = 30; xPosition = 20; yPosition = 60; color = "blue"; isVisible = false; } // Make this circle visible. If it was already visible, do nothing. public void makeVisible( ) { isVisible = true; draw( ); } // Make this circle invisible. If it was already invisible, do nothing. public void makeInvisible( ) { erase( ); isVisible = false; }

  36. BlueJ: Source code (3/8) // Move the circle a few pixels to the right. public void moveRight( ) { moveHorizontal(20); } // Move the circle a few pixels to the left. public void moveLeft( ) { moveHorizontal(-20); } // Move the circle a few pixels up. public void moveUp( ) { moveVertical(-20); } // Move the circle a few pixels down. public void moveDown( ) { moveVertical(20); }

  37. BlueJ: Source code (4/8) // Move the circle horizontally by 'distance' pixels. public void moveHorizontal(int distance) { erase( ); xPosition += distance; draw( ); } // Move the circle vertically by 'distance' pixels. public void moveVertical(int distance) { erase( ); yPosition += distance; draw( ); }

  38. BlueJ: Source code (5/8) // Slowly move the circle horizontally by 'distance' pixels. public void slowMoveHorizontal(int distance) { int delta; if (distance < 0) { delta = -1; distance = -distance; } else { delta = 1; } for (int i = 0; i < distance; i++) { xPosition += delta; draw( ); } }

  39. BlueJ: Source code (6/8) // Slowly move the circle vertically by 'distance' pixels. public void slowMoveVertical(int distance) { int delta; if (distance < 0) { delta = -1; distance = -distance; } else { delta = 1; } for (int i = 0; i < distance; i++) { yPosition += delta; draw( ); } }

  40. BlueJ: Source code (7/8) // Change the size to the new size (in pixels). // Size must be >= 0. public void changeSize(int newDiameter) { erase( ); diameter = newDiameter; draw( ); } // Change the color. Valid colors are "red", "yellow", // "blue", "green", "magenta" and "black". public void changeColor(String newColor) { color = newColor; draw( ); }

  41. BlueJ: Source code (8/8) // Draw the circle with current specifications on screen. private void draw( ) { if (isVisible) { Canvas canvas = Canvas.getCanvas( ); canvas.draw(this, color, new Ellipse2D.Double(xPosition, yPosition, diameter, diameter)); canvas.wait(10); } } // Erase the circle on screen. private void erase( ) { if (isVisible) { Canvas canvas = Canvas.getCanvas( ); canvas.erase(this); } } }

More Related