19.10.2013 Views

Introduction - Framingham State University

Introduction - Framingham State University

Introduction - Framingham State University

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Introduction</strong><br />

David M. Keil, <strong>Framingham</strong> <strong>State</strong> <strong>University</strong><br />

CSCI 152 Computer Science I<br />

Using Java<br />

<strong>Introduction</strong><br />

1. What this course offers<br />

2. Course topics<br />

3. How the course delivers<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 1<br />

Self-introductions<br />

• What are your experiences<br />

with computing?<br />

• What do you think CS is about?<br />

• What do you expect from this course?<br />

• What have your learning experiences<br />

been like?<br />

• What is your major?<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 2<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

A question to explore<br />

What do you need to know about<br />

computer science and Java programming?<br />

–as an IT professional<br />

–as a software engineer<br />

–as a CS major<br />

–for CS II and UNIX<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 3<br />

1. What this course offers<br />

• What is computer science? How does<br />

it differ from information technology?<br />

• Do you like solving problems?<br />

• What are data and abstraction?<br />

• How does thinking compare with<br />

computation?<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 4<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

The chronic software crisis<br />

• The global market demands that new tools<br />

be created to work and do business<br />

• New software is required rapidly<br />

• Software development for decades has<br />

tended to be behind schedule<br />

• Software is often unreliable<br />

• Solutions: web hosting, design,<br />

documentation, readable code, structured<br />

techniques, object-oriented technology<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 5<br />

Some functional problems<br />

• Write an expression whose value is the area of<br />

the surface of a 2' x 3' x 5' box<br />

• ... a box w feet wide, h feet high, and<br />

d feet deep<br />

• Write an expression whose value is the 6.25%<br />

sales tax on a purchase of a $199 hard drive<br />

and a $79.95 software package<br />

• ... a hard drive costing h dollars and software<br />

costing s dollars, taxed at t %<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 6<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

Information technology<br />

• “The set of techniques used in information<br />

handling and retrieval of information<br />

automatically” (Evans et al)<br />

• Hardware and software for processing<br />

digital data (Keil)<br />

• “Application of appropriate technologies to<br />

the organization, manipulation, and<br />

distribution of information by computers<br />

and telecommunications” (G. Stamatellos)<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 7<br />

The discipline of computer science<br />

• The study of computer science is concerned<br />

with solving problems about information<br />

• “The study of natural and artificial information<br />

processes” (Peter Denning, 2007)<br />

• The tools include<br />

- analysis (breaking down problems)<br />

- algorithms (step-by-step plans)<br />

- designs of interactive processes<br />

• CS has a logical and an empirical side<br />

• We use abstraction to help solve problems<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 8<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

The CS curriculum<br />

Threads:<br />

• Programming, system design, and<br />

software engineering<br />

• Computer architecture, operating<br />

systems, and networks<br />

• Data management (e.g., databases)<br />

• Theory (logic, statistics, discrete math,<br />

algorithm analysis, automata, AI)<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 9<br />

Cybernetics<br />

• Norbert Wiener, Cybernetics: Or Control<br />

and Communication in the Animal and the<br />

Machine, 1948<br />

• The study of interactive, feedback-driven<br />

systems<br />

• Word origin: kyber, person at helm of boat<br />

• Note: Cybernetics was not defined in<br />

relation to computer technology<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 10<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

Three computing paradigms<br />

• Algorithmic<br />

• Sequential interactive<br />

• Multi-stream interactive<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 11<br />

Computing practices<br />

Categories:<br />

• Programming (using programming languages –<br />

programs computer science!)<br />

• Engineering systems (hardware and software)<br />

• Applying (building systems to support<br />

practical work)<br />

• Innovating (generating durable changes in how<br />

systems and communities operate)<br />

• Modeling and validation (to represent systems<br />

abstractly; to predict and verify behavior)<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 12<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

Guiding concerns in CS I<br />

• Algorithm and module design<br />

• Syntax, semantics of programming languages<br />

• Documentation<br />

• Objects and classes of objects<br />

Steps in problem solving<br />

Repeat until problem is solved:<br />

1. Specify the desired results<br />

2. Design a solution<br />

3. Code solution in programming language<br />

4. Compile, test, debug<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 13<br />

Kinds of abstractions used in CS I<br />

• Bits store data of any type -- numeric, text,<br />

sound, image<br />

• Variables and other expressions with values;<br />

variables occupy storage<br />

• Data types (string, integer, real)<br />

• Control structures (e.g., loop, branch)<br />

• Algorithms and interactive process<br />

specifications<br />

• Classes: specify categories of objects<br />

• Objects: instances of classes<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 14<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

Symbol manipulation<br />

• Symbol: an abstraction by which we may<br />

represent items in the real world<br />

• Example: {0,1} is a set of symbols<br />

• This set may be used to build symbols of<br />

any complexity (numerals, words, pix…)<br />

• We can operate on symbols (add,<br />

concatenate, reorder, etc.)<br />

• A computation can combine sequences,<br />

branches, loops<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 15<br />

The system development process<br />

The development process is iterative<br />

Phases:<br />

• Analysis: specifies input and output<br />

• Program design: prepares<br />

algorithms, data structures<br />

• Coding: implements design as a<br />

program in a language<br />

• Testing: evaluates working program<br />

• Maintenance: addresses errors and<br />

needs not found in previous stages<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 16<br />

•1<br />

6<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

Testing and debugging<br />

• Software and web sites require testing before<br />

deployment<br />

• Testing is often done by quality assurance<br />

departments<br />

• All software writing entails error and<br />

debugging<br />

• JavaScript is easy to test on a browser, but the<br />

browser does not supply error locations or other<br />

diagnostics<br />

David Keil Computer Science I Using •17 Java <strong>Introduction</strong> 7/13 17<br />

CS I offers support<br />

for you to acquire<br />

• Problem-solving capabilities<br />

• Computing concepts<br />

• Skills with Java<br />

• What it takes to make better software!<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 18<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

Pretest<br />

• This pre-quiz will assess some<br />

capabilities presented in some sections of<br />

Intro to IT (see Basic Skills, below)<br />

• There will be second chances on the<br />

objectives assessed<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 19<br />

IT fluency and programming<br />

Bundling instructions is programming, e.g.:<br />

• Named styles: bundles of text formats<br />

• HTML files: what is to appear on a web page,<br />

including interactive elements<br />

• Spreadsheet formulas: algebraic expressions that<br />

use cell references (variables) to compute<br />

• Database queries: select some data from a table<br />

• JavaScript event-handling code in HTML files<br />

• Flowcharts, pseudocode, and UML specify<br />

actions<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 20<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

Java<br />

• We will use the Java programming<br />

language to present many computer-science<br />

concepts<br />

• You will get hands-on experience<br />

developing and debugging problem<br />

solutions using Java<br />

• Java is an object-oriented language<br />

• Java programs are compiled into machine<br />

language and tested<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 21<br />

2. Course topics<br />

1. Problem solving and system design<br />

2. Computer organization and hardware<br />

3. <strong>Introduction</strong> to Java<br />

4. Standard Java data types<br />

5. Branch and loop statements<br />

6. Methods and classes<br />

7. Arrays and collections<br />

8. Professional software development<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 22<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

CS I course-wide objectives<br />

0a. Participate in class activities throughout<br />

the semester<br />

0b. Solve problems as part of a team<br />

0c. Present results in the classroom<br />

0d. Present written results<br />

0e. Show knowledge of facts and concepts<br />

0f. Summarize the semester’s learning<br />

0g. Write a documented programming project<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 23<br />

Some basic concepts<br />

(presented in CSCI 120 <strong>Introduction</strong> to IT)<br />

1. Explain and use spreadsheet formulas<br />

2. Explain and use built-in functions in a<br />

spreadsheet<br />

3. Recognize or explain simple database concepts<br />

4. Show knowledge of the basic terminology of<br />

computer hardware.<br />

5. Show knowledge of the basic terminology of<br />

computer software<br />

6. Identify the steps in software development<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 24<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

More basic concepts (IIT)<br />

7. Explain the notion of an algorithm<br />

8. Trace a branching computation<br />

9. Trace a loop<br />

10. Design a branching algorithm<br />

11. Design a looping algorithm<br />

12. Explain the concept of debugging<br />

13. Explain how technological changes have<br />

created new social and legal issues<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 25<br />

Topic 1-4 objectives<br />

1. Describe and apply principles of system<br />

specification and design<br />

2. Explain and use the binary system of<br />

numerals and simple machine instructions<br />

3. Write, document, and test a simple Java<br />

program<br />

4. Use standard Java data types in<br />

documented, tested programs<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 26<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

Topic 5-8 objectives<br />

5. Use and debug a variety of Java branch<br />

and loop statements<br />

6. Define and test Java methods and classes<br />

with object-oriented features<br />

7. Define and safely manipulate arrays,<br />

including collections of objects<br />

8. Explain technical and social issues<br />

associated with professional software<br />

development<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 27<br />

3. How this course<br />

will deliver<br />

• What are the objectives and topics?<br />

• How is learning assessed in CS I?<br />

• What are your expectations in course<br />

organization?<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 28<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

Course organization<br />

• We have 8 topics<br />

• Each topic has an objective<br />

• Each topic has 3-5 subtopics<br />

• Each subtopic has 1-3 desired outcomes<br />

• Some outcomes are considered core<br />

• A set of problems for each subtopic<br />

outcome is available<br />

• Exercises and quizzes focus on these<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 29<br />

Classroom format<br />

• Emphasis is discussion and interaction<br />

• Slides and presentation summarize content<br />

of the course<br />

• We will ask each other questions<br />

• Classroom is a focused professional<br />

environment<br />

• Participation matters<br />

• Resources: classroom, textbook, handouts,<br />

student research<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 30<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

Exercises, group work,<br />

and presentations<br />

• Exercises consist of individual and group<br />

problem solving<br />

• Each group presents one solution per topic<br />

• I evaluate each group’s solution to each subtopic<br />

problem<br />

• Groups review and submit individuals’ exercises,<br />

problem solutions for checkoff<br />

• Group solutions and presentations count 15% of<br />

final grade; individual solutions 5%<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 31<br />

Group work in classroom<br />

• Form groups of 3 students to take up a<br />

problem<br />

• Each group should have<br />

– Facilitator – keeps discussion on track<br />

– Recorder – writes results of discussion<br />

– Reporter – presents results to class<br />

• Participation by all in group work is one of<br />

our basic objectives in this course<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 32<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

Programming project<br />

• As a semester project, you will construct a<br />

file-maintenance application in Java<br />

• It will input, display, store, and retrieve<br />

data about something of your choice<br />

• The project makes use of file I/O, class<br />

design, loops, methods, and arrays.<br />

• The project goal is experience in<br />

specifications, design, coding, and testing<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 33<br />

Assessing objectives<br />

• After doing exercises on a topic, a student<br />

may show attainment of an outcome/<br />

objective by answering a quiz problem on it,<br />

in writing, in class<br />

• 3-4 opportunities will be available for<br />

each outcome<br />

• 60% of final assessment and grade is based<br />

on showing attainment of objectives and<br />

outcomes<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 34<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

Assessment and grading<br />

• To measure:<br />

• Individual achievement<br />

of learning objectives<br />

• Contribution to the<br />

learning of the class<br />

• Breakdown: 60/40<br />

• Assumptions: Learning<br />

is shared and measurable<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 35<br />

Assessment of<br />

learning objectives<br />

Assumptions:<br />

• Application of<br />

concepts is<br />

measurable via<br />

core and other<br />

topic objectives<br />

• Facts about concepts matter<br />

• We learn by summarizing and reflecting<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 36<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

Assessment of contribution<br />

and participation<br />

We assume that learning<br />

happens by:<br />

• Doing and sharing<br />

inquiry<br />

• Being present<br />

• Solving problems together<br />

• Activity throughout the semester<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 37<br />

Final exam and summary quiz<br />

• On final exam day, each student will be<br />

asked to present elements of her/his<br />

research or semester project<br />

• During the last week of classes, we’ll<br />

have a summary quiz of multiple-choice<br />

questions and multi-topic problems<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 38<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

Academic honesty<br />

• Plagiarism: “occurs when you use someone<br />

else’s ideas or words and represent them as your<br />

own.”<br />

• Directly lifted text must be quoted and credited<br />

• Use of ideas or other information must be<br />

credited by citations or references<br />

• Citation standards for MLA and APA are given<br />

at www.citationmachine.net<br />

• See catalog for FSU policy<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 39<br />

What signing work means<br />

• In this course, all code and words submitted<br />

are to be of the student who signs the work<br />

– Quizzes: no collaboration or device use<br />

– Exercises: device use and collaboration<br />

are OK, even required<br />

• Principles:<br />

– Words belong to the original writer<br />

– Ideas belong to everyone; but we<br />

acknowledge their sources<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 40<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

Semester grade<br />

Application of concepts<br />

core topic objectives 35<br />

other topic objectives 10<br />

Knowledge of facts 10<br />

Summary and reflection 5<br />

Written contribution 15<br />

Presenting results in person 10<br />

Group activity 10<br />

Attendance 5<br />

100<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 41<br />

A proposed agreement<br />

I commit to:<br />

• know the course material well, present it clearly<br />

• return submitted work within a week.<br />

• answer questions<br />

Students commit to:<br />

• ask questions<br />

• answer reasonable questions, risking being wrong<br />

• submit work on time, even if incomplete<br />

• work sometimes in groups<br />

• present results to the class.<br />

All agree: respect all contributions to discussion<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 42<br />

David Keil Computer Science I 7/13


<strong>Introduction</strong><br />

Success<br />

• This is sometimes difficult<br />

• My experience: students who want to learn are<br />

likely to do so<br />

• If you like programming, all the better<br />

• You may benefit from taking notes in class to<br />

absorb and review knowledge<br />

• Learning requires doing, not just listening<br />

or reading<br />

• Learning is interactive and social<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 43<br />

References<br />

ACM/IEEE. Computing Curricula 2001.<br />

Peter J. Denning. Great principles of computing.<br />

CACM 46(11), November 2003, pp. 15-20.<br />

Cay Horstmann. Big Java, 3 rd Ed. Wiley, 2008.<br />

J. Parsons, D. Oja. Computer Concepts, 9 th ed.<br />

Thomson, 2007.<br />

L. Snyder. Fluency with Information<br />

Technology. Addison Wesley, 2006.<br />

David Keil Computer Science I Using Java <strong>Introduction</strong> 7/13 44<br />

David Keil Computer Science I 7/13

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!