Introduction - Framingham State University
Introduction - Framingham State University
Introduction - Framingham State University
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