1 Course Summary Fall 2005 CS 101 Aaron Bloomfield.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

Welcome to Math 302A Attendance: Number Sense Game Use a given operation to get from a starting number to within 1 of the goal. Example: Start: 100, Goal:
COMPSCI 105 S Principles of Computer Science 12 Abstract Data Type.
Georgia Institute of Technology Workshop for CS-AP Teachers Chapter 3 Advanced Object-Oriented Concepts.
CS540 Software Design Lecture 1 1 Lecture 1: Introduction to Software Design Anita S. Malik Adapted from Budgen (2003) Chapters 1.
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
Aalborg Media Lab 23-Jun-15 Inheritance Lecture 10 Chapter 8.
Fall 2007CS 2251 Software Engineering Intro. Fall 2007CS 2252 Topics Software challenge Life-cycle models Design Issues Documentation Abstraction.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman.
CSC230 Software Design (Engineering)
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
1 Learning Statistics Your goals and beliefs about learning statistics are directly related to your grade in STT 215.
Introduction. Let’s begin Goal –Teach you how to program effectively Skills and information to be acquired –Mental model of computer and network behavior.
Software design and development Marcus Hunt. Application and limits of procedural programming Procedural programming is a powerful language, typically.
What you need to know about this class A powerpoint syllabus.
DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics.
Dr. Ken Hoganson, © August 2014 Programming in R STAT8030 Programming in R COURSE NOTES 1: Hoganson Programming Languages.
TESTING.
Introduction to Object-oriented programming and software development Lecture 1.
CSCI-383 Object-Oriented Programming & Design Lecture 4.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Top-Down Design and Modular Development
Program Design CMSC 201. Motivation We’ve talked a lot about certain ‘good habits’ we’d like you guys to get in while writing code. There are two main.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
Hello World! CSE442. Course Summary A semester long group project – You will develop software from idea to implementation You have full freedom to choose.
Introduction. CS 101 Instructors –Jim Cohoon Office –Olsson 221 –Hours: Monday 3:30 – 5:00, Tuesday 10:00 – 11:00 – id: –Aaron Bloomfield Office.
11 Chapter 11 Object-Oriented Databases Database Systems: Design, Implementation, and Management 4th Edition Peter Rob & Carlos Coronel.
CSCI-383 Object-Oriented Programming & Design Lecture 13.
CSE 219 Computer Science III Program Design Principles.
CS 101 Today’s class will start 5 minutes late (and we’ll be talking about lab scheduling problems then)
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Major objective of this course is: Design and analysis of modern algorithms Different variants Accuracy Efficiency Comparing efficiencies Motivation thinking.
Lecture 1 Introduction Figures from Lewis, “C# Software Solutions”, Addison Wesley Richard Gesick.
Making Decisions uCode: October Review What are the differences between: o BlueJ o Java Computer objects represent some thing or idea in the real.
OBJECT-ORIENTED PROGRAMMING (OOP) WITH C++ Instructor: Dr. Hany H. Ammar Dept. of Electrical and Computer Engineering, WVU.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
1 Daily Announcements CS 202, Spring 2007 Aaron Bloomfield.
Software Engineering Review CS 244 Brent M. Dingle, Ph.D. Game Design and Development Program Department of Mathematics, Statistics, and Computer Science.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Data Structures Using C++ 2E
Introduction to Computer Programming CS 126 Lecture 1 Zeke Maier.
Designing Classes CS239 – Jan 26, Key points from yesterday’s lab  Enumerated types are abstract data types that define a set of values.  They.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Chapter 3 Object Interaction.  To construct interesting applications it is not enough to build individual objects  Objects must be combined so they.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
A Roadmap towards Machine Intelligence
1 CS 101 Today’s class will begin about 5 minutes late We will discuss the lab scheduling problems once class starts.
M1G Introduction to Programming 2 3. Creating Classes: Room and Item.
Software Reuse Course: # The Johns-Hopkins University Montgomery County Campus Fall 2004 Session 5 Lecture # 4 – October 5, 2004.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
From the customer’s perspective the SRS is: How smart people are going to solve the problem that was stated in the System Spec. A “contract”, more or less.
OOPS CONCEPT.  OOPS  Benefits of OOPs  OOPs Principles  Class  Object Objectives.
Physics 218 towards a set of guidelines. Why guidelines for 218 ?  This guidelines need to be created for several purposes: 1.to be as fair as possible.
1 Course Summary Spring 2007 CS 101 Aaron Bloomfield.
PROGRAMMING FUNDAMENTALS INTRODUCTION TO PROGRAMMING. Computer Programming Concepts. Flowchart. Structured Programming Design. Implementation Documentation.
Software Construction Lab 05 Abstraction, Inheritance, and Polymorphism in Java.
DSMA 0393/1414 Comments of Students. Co-requisite Model Student Comments Students were given this request on their final examination: Write a statement.
XuanTung Hoang 1 Something to discuss Feedbacks on Midterm Exam Final exam and term project  Final exam requires solid knowledge/skills in Java  Be more.
Algorithms and Problem Solving
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
About the Presentations
Course Summary Fall 2006 CS 101 Aaron Bloomfield
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Objects First with Java
Algorithms and Problem Solving
Paper by D.L Parnas And D.P.Siewiorek Prepared by Xi Chen May 16,2003
Vocabulary Algorithm - A precise sequence of instructions for processes that can be executed by a computer Low level programming language: A programming.
Presentation transcript:

1 Course Summary Fall 2005 CS 101 Aaron Bloomfield

2 Course Reflection

3 Course goals  Objectives: Students who complete the course will: Understand fundamentals of programming such as variables, conditional and iterative execution, methods, etc. Understand fundamentals of object-oriented programming in Java, including defining classes, invoking methods, using class libraries, etc. Be aware of the important topics and principles of software development. Have the ability to write a computer program to solve specified problems. Be able to use the Java SDK environment to create, debug and run simple Java programs.

4 Unstated course goals  Everybody needs to have a “base” level of programming to continue on in the CS courses (or as required by other departments) CS 101 and 201 provide that “base” level

5 What was new this semester  Test code required In hindsight, this should have been explained better  More TA office hours This was well received by everybody  Faculty mini-talks Had trouble scheduling this in a coherent way, so only one happened this semester. Should I do more?  Labs Many were improved upon, and a few were added  Increased number of HWs by 2  Final few assignments were for a common big program In hindsight, we see a better way to implement this next semester  Changing of the order the chapters were gone over

6 Changes on deck for next semester  Will keep (and improve upon) all the stuff from the last slide  Study groups The idea is a way for people to study and/or work together  This does NOT mean group assignments, however There were not enough people to make this work this semester  Probably will ditch CodeLab - it didn’t work as well as I had hoped It’s a good idea, but a real pain to manage properly  I want to talk about debugging more We are considering a site license for the debugging version of JCreator  Better web site design (it’s in development now – thoughts?)  Will most likely lower the number of midterms to two (and require the final)  Want to put more diagrams in the slides (make them more visual)  Will have the TAs give review sessions before the tests  Might have forums/newsgroups on the website

7 What didn’t work this semester  I botched a lecture back in September (in chapter 3) With this fixed, I’ll have freed up one more lecture session Plus one for the removed midterm  A number of things worked, but need improvement (mentioned before): Implementation of the game Faculty mini-talks Required test code  The semester schedule (i.e. Thanksgiving break) made it difficult to properly teach arrays There wasn’t a HW on 1-D arrays as a result This won’t be a problem in the spring, but will be next fall  Had a bit of trouble keeping the lectures interesting towards the end of the semester  Want to lower the amount of student frustration

8 What did work this semester  This class learned much more than last semester’s class did Even if you feel confused now, take my word for it And as my goal is to teach (and not to be popular), this is a good thing  Changing of the order the chapters were gone over  Improved TA office hours  Improvements to the labs  Grading system worked very well this semester  All the code on the website  Many things that were “behind the scenes” TA organization and utilization Grading system Me delegating the work better to the TAs

9 Did I push too hard this semester?  I pushed the class much harder this semester than last semester  But did I push too hard?  Consider: I’ve gotten as many “things are going great” comments as I have “things are too hard” comments (anecdotal) Homeworks took under 5 hours on average  The results from the survey questions for each HW There were 8 HWs over about 16 weeks  That’s 2.5 hours (on average) on homeworks per week  Ultimately, I think that with a bit better organization, I can lower the amount of time spent on the HWs while still having people learn the same amount  I’m interested in your feedback on this! But not today in lecture….

10 The Big OOP Picture

11 The classes for the game  Creature (HW J6)  Weapon (HW J6)  Room (HW J7)  Map (HW J8)  Game (HW J8)  Parser (lab 9)  Descriptions (lab 10)  MapPrinter (lab 11)

12 How a big OOP program interacts  Note how the classes interacted in the game  A lot of objects were created and manipulated A Room for each spot in the grid Creatures and Weapons for some of the Rooms A Map object Etc.  The way this game has objects interacting is how a big OOP program would work  Encapsulation The Room class didn’t need to know how the Creature class kept track of whether the monster was angry or not  It just called getAngry() and setAngry()  It could have been stored as a boolean or an int

13 Problem solving  To solve a problem in CS, you break it down into smaller and smaller pieces  A big program is broken down into packages Which we haven’t seen yet Consider the game to be one package  The packages are broken down into hierarchies This uses inheritance Our game didn’t use a hierarchy, as you did know of inheritance at that point  The hierarchies are broken down into classes The game had 8 classes  Each class is broken down into methods and variables Some (such as MapPrinter) only had 1; others (such as Map) had dozens  Each method is broken down into parts, etc.

14 The completed game  This could easily be made by multiple people Each person does a separate class Not exactly equal, but it still lowers the workload  Our (fully commented) code for the game was over 1,300 lines  However long yours was, it was a program greater than 1,000 lines Even if you had trouble getting parts working, and had to use our code You still wrote part, and saw how it interacted with the rest of the system

15 Review of Chapter 1

16 Demotivator winners! Methodology Methodology –1 st place vote counted for 3 points –2 nd place vote counted for 2 points –3 rd place vote counted for 1 point Will buy two demotivators and hang them in my office… Will buy two demotivators and hang them in my office… The results, with 137 of 173 precincts reporting… The results, with 137 of 173 precincts reporting…

17 Engineering software  Complexity of software grows as attempts are made to make it easier to use

18 Software engineering  Goal Production of software that is effective and reliable, understandable, cost effective, adaptable, and reusable  Goal Production of software that is effective and reliable, understandable, cost effective, adaptable, and reusable  Work correctly and not fail  Goal Production of software that is effective and reliable, understandable, cost effective, adaptable, and reusable  Because of the long lifetime many people will be involved Creation Debugging Maintenance Enhancement  Two-thirds of the cost is typically beyond creation  Goal Production of software that is effective and reliable, understandable, cost effective, adaptable, and reusable  Cost to develop and maintain should not exceed expected benefit  Goal Production of software that is effective and reliable, understandable, cost effective, adaptable, and reusable  Design software so that new features and capabilities can be added  Goal Production of software that is effective and reliable, understandable, cost effective, adaptable, and reusable  Makes sense due to the great costs involved to have flexible components that can be used in other software

19  Abstraction  Encapsulation  Modularity  Hierarchy  Abstraction  Encapsulation  Modularity  Hierarchy  Abstraction  Encapsulation  Modularity  Hierarchy  Abstraction  Encapsulation  Modularity  Hierarchy  Abstraction  Encapsulation  Modularity  Hierarchy Separate components into external and internal aspects Construct a system from components and packages Ranking or ordering of objects Principles of software engineering Determine the relevant properties and features while ignoring nonessential details

20 Object-oriented design  Purpose Promote thinking about software in a way that models the way we think and interact with the physical word  Including specialization  Object Properties or attributes Behaviors

21 Programming  Problem solving through the use of a computer system  Maxim You cannot make a computer do something if you do not know how to do it yourself

22 Problem Solving Process  What is it? Analysis Design Implementation Testing

23 Problem Solving Process  What is it? Analysis Design Implementation Testing Determine the inputs, outputs, and other components of the problem Description should be sufficiently specific to allow you to solve the problem

24 Problem Solving Process  What is it? Analysis Design Implementation Testing Describe the components and associated processes for solving the problem Straightforward and flexible Method – process Object – component and associated methods

25 Problem Solving Process  What is it? Analysis Design Implementation Testing Develop solutions for the components and use those components to produce an overall solution Straightforward and flexible

26 Problem Solving Process  What is it? Analysis Design Implementation Testing Test the components individually and collectively

27 Problem Solving Process

28 Tips  Find out as much as you can  Reuse what has been done before  Expect future reuse  Break complex problems into subproblems

29 Tips  Find out as much as you can  Reuse what has been done before  Expect future reuse  Break complex problems into subproblems Find out what is known about the problem Talk to the presenter Determine what attempts have succeeded and what attempts have failed Research can require significant time and generate questions The effort is worthwhile because the result is a better understanding True understanding of the problem makes it easier to solve Consider Sketching a solution and then repeatedly refine its components until the entire process is specified

30 Tips  Find out as much as you can  Reuse what has been done before  Expect future reuse  Break complex problems into subproblems Your time is valuable Correctness is probably even more valuable Use existing infrastructure that is known to work Be open to indirect use of existing materials

31 Tips  Find out as much as you can  Reuse what has been done before  Expect future reuse  Break complex problems into subproblems Make as few assumptions as necessary Maximizes the likelihood that your effort can be used in future situations

32 Tips Divide-and-conquer Solve subproblems and combine into an overall solution  Find out as much as you can  Reuse what has been done before  Expect future reuse  Break complex problems into subproblems

33 Have a great holiday break!