9/11/15. What is Programming? CSCI 209: Software Development. Discussion: What Is Good Software? Characteristics of Good Software?

Similar documents
2 Introduction to Java. Introduction to Programming 1 1

12/22/11. } Android by Pearson Education, Inc. All Rights Reserved by Pearson Education, Inc. All Rights Reserved.

INTRODUCTION TO JAVA PROGRAMMING LANGUAGE

Fahim Uddin 1. Java SDK

CS 51 Intro to CS. Art Lee. September 2, 2014

Section 1.4. Java s Magic: Bytecode, Java Virtual Machine, JIT,

1. Overview of the Java Language

CS 209 Programming in Java #1

System Structures. Services Interface Structure

Java Garbage Collection Basics

Java applets. SwIG Jing He

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

CSC230 Getting Starting in C. Tyler Bletsch

CSCI E 98: Managed Environments for the Execution of Programs

Lecture 1 Introduction to Android

Monitoring, Tracing, Debugging (Under Construction)

A Java Crib Sheet. First: Find the Command Line

Installing Java. Table of contents

1) SETUP ANDROID STUDIO

Habanero Extreme Scale Software Research Project

Lab 0 (Setting up your Development Environment) Week 1

Reminders. Lab opens from today. Many students want to use the extra I/O pins on

Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming

CSE 452: Programming Languages. Acknowledgements. Contents. Java and its Evolution

Lesson 06: Basics of Software Development (W02D2

C# and Other Languages

The "Eclipse Classic" version is recommended. Otherwise, a Java or RCP version of Eclipse is recommended.

Contents. Java - An Introduction. Java Milestones. Java and its Evolution

CS 170 Java Programming 1. Welcome to CS 170. All about CS 170 The CS 170 Online Materials Java Mechanics: Your First Program

Android Programming and Security

1001ICT Introduction To Programming Lecture Notes

The Java Series. Java Essentials I What is Java? Basic Language Constructs. Java Essentials I. What is Java?. Basic Language Constructs Slide 1

Easing embedded Linux software development for SBCs

An Overview of Java. overview-1

Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages

An Introduction to Software Development Process and Collaborative Work

USE OF PYTHON AS A SATELLITE OPERATIONS AND TESTING AUTOMATION LANGUAGE

Virtual Machine Learning: Thinking Like a Computer Architect

Effective Java Programming. efficient software development

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

A Modular Approach to Teaching Mobile APPS Development

What Perl Programmers Should Know About Java

Jonathan Worthington Scarborough Linux User Group

Chapter 2 System Structures

Online Recruitment System 1. INTRODUCTION

What s Cool in the SAP JVM (CON3243)

Java Programming. Binnur Kurt Istanbul Technical University Computer Engineering Department. Java Programming. Version 0.0.

For Introduction to Java Programming, 5E By Y. Daniel Liang

Rich Internet Applications

CrossPlatform ASP.NET with Mono. Daniel López Ridruejo

CS 40 Computing for the Web

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

ORACLE BUSINESS INTELLIGENCE WORKSHOP. Prerequisites for Oracle BI Workshop

C. Cross-Platform Java also presented a middleware threat to Microsoft s operating system monopoly

Java in Education. Choosing appropriate tool for creating multimedia is the first step in multimedia design

LECTURES NOTES Organisational Aspects of Software Development

THE OPEN SOURCE DEVELOPER REPORT

BEAJRockit Mission Control. Using JRockit Mission Control in the Eclipse IDE

CS 253: Intro to Systems Programming

Outline. hardware components programming environments. installing Python executing Python code. decimal and binary notations running Sage

Chapter 13: Program Development and Programming Languages

Java Software Development Kit (JDK 5.0 Update 14) Installation Step by Step Instructions

Getting Started with Android Development

The Context of Software Development

Developing Web Services with Eclipse and Open Source. Claire Rogers Developer Resources and Partner Enablement, HP February, 2004

Chapter 13 Computer Programs and Programming Languages. Discovering Computers Your Interactive Guide to the Digital World

Java Language Tools COPYRIGHTED MATERIAL. Part 1. In this part...

Example of Standard API

Best Practices for Java Projects Horst Rechner

Lecture 17: Mobile Computing Platforms: Android. Mythili Vutukuru CS 653 Spring 2014 March 24, Monday

New Technology Introduction: Android Studio with PushBot

What is a programming language?

CSC 551: Web Programming. Spring 2004

Programming Languages

Syllabus for CS 134 Java Programming

Take full advantage of IBM s IDEs for end- to- end mobile development

Java with Eclipse: Setup & Getting Started

BEST WEB PROGRAMMING LANGUAGES TO LEARN ON YOUR OWN TIME

Setting up Sudoku example on Android Studio

How To Improve Performance On An Asa 9.4 Web Application Server (For Advanced Users)

Eclipse installation, configuration and operation

Installing the Android SDK

Code Estimation Tools Directions for a Services Engagement

Chapter 1 Introduction to Computers, Programs, and Java

Evaluation of Load/Stress tools for Web Applications testing

Chapter 3.2 C++, Java, and Scripting Languages. The major programming languages used in game development.

DESIGN AND IMPLEMENTATION OF A FILE SHARING APPLICATION FOR ANDROID

<Insert Picture Here> Java, the language for the future

Nokia 9210i/9290 Communicators and PersonalJava TM Application Development

SE 450 Object-Oriented Software Development. Requirements. Topics. Textbooks. Prerequisite: CSC 416

Android Development Tools for Eclipse

Oracle Java SE Embedded

Oracle Java SE and Oracle Java Embedded Products

Android Programming: Installation, Setup, and Getting Started

Programming in Python. Basic information. Teaching. Administration Organisation Contents of the Course. Jarkko Toivonen. Overview of Python

VOL. 2, NO. 1, January 2012 ISSN ARPN Journal of Science and Technology ARPN Journals. All rights reserved

Chapter 13: Program Development and Programming Languages

Practical Android Projects Lucas Jordan Pieter Greyling

Java and Real Time Storage Applications

Transcription:

What is Programming? CSCI 209: Software Development Sara Sprenkle sprenkles@wlu.edu "If you don't think carefully, you might think that programming is just typing statements in a programming language." --Ward Cunningham Any fool can write code that a computer can understand. Good programmers write code that humans can understand. -- Martin Fowler "Refactoring: Improving the Design of Existing Code" 1 2 Discussion: What Is Good Software? What are its outcomes? What are the characteristics of the software? How can we write good software? What are short-term vs long-term goals? Characteristics of Good Software? Free of bugs Ø Robust, reliability, stability Code is easy to read, extend, maintain Ø Readability, extensibility, maintainability Application is easy to use Ø Usability Efficiency Scalability è Referred to as the *ilities 3 4 Course Content Software Design Principles Java Ø Statically typed language Software development, productivity tools Ø Eclipse Ø Version Control Systems Ø Some UNIX What to Expect from this Class Programming intensive Ø Variety of assignments and projects Ø More freedom in design, *ilities Larger portion of your grade Correctness is NOT enough Ø Building on large library of classes Ø Read others code! Learn from the good and the bad Ø Building larger applications Compare/Contrast with Python Ø PL design; what s the best PL for your needs Learning on your own Ø Online resources 5 6 1

9/11/15 Learning Objectives Feedback from an Alumnus Discuss software development and practices I am schooling everyone at work on OO design and Java. Seriously, keep pounding OO design principles in. It is incredibly practical. I'm teaching CS majors and Computer Engineering grads about this. It's crazy how some (good) technical schools don't stress this more. knowledgably, using appropriate terminology Design, implement, test, and document efficient applications of increasing size and complexity Understand the designs and implementations of others Use a version control system, such as Subversion or CVS Use many of the capabilities of the Eclipse IDE Test and debug large applications systematically, using standard tools Understand design principles such as DRY and shy Discuss the benefits and limitations of a statically typed language 7 Class Details Course Web Site http://www.cs.wlu.edu/~sprenkle/cs209 8 Class Details Programming Assignments Ø Various sizes Ø To start, a lot of short ones Ø Example code, lecture slides, readings, resources Ø Course wiki 2 Projects 2 Exams Optional Textbooks Ø Use plentiful online resources instead Participation Ø Class discussions 9 Course Dynamics Professor s Ø Be prepared for class Ø Provide constructive feedback to students Ø Treat students with respect Ø Challenge and encourage students Ø Make material as clear as possible 10 My Bio Student s Responsibilities Responsibilities: Ø Be prepared for class (do readings and homework) Ø Give attention and effort in class to learning Ø Ask questions (during class and via email) Ø Use professor's office hours Ø Let professor know if something is going wrong Ø Treat other students and professor with respect 11 From Dallastown, PA B.S., Gettysburg College M.S., Duke University Ph.D., University of Delaware For fun: pop culture, gardening Volunteer with Rockbridge Animal Alliance 12 2

My Research Interests General: Software engineering Automated testing of web applications Ø Develop algorithms Ø Implement in tools Ø Empirical studies Try ideas out, see what actually happens, analyze Student Survey Class years Where you re from Any experience with Java CSCI335: Software Engineering via Web Applications Offered Spring 2016! 13 14 What is Java? and, why should I learn it? From Sun Microsystems Ø 1995, James Gosling and Patrick Naughton Ø Specifications Object-oriented Rich and large library Develop cross-platform applications Ø Web, desktop, embedded Ø Frameworks Widely used http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html 15 What is Java? Java Programming Language Java Virtual Machine Java Class Libraries 16 Overview: Writing, Executing Java Programs Program.java Written in Java Programming Language Compiles javac Bytecode: machine code for a virtual CPU Executes jvm Java Programming Language Similar to Python But entirely object-oriented* Step 1: Program.java Compiler javac Label the Python equivalents Written in Java Programming Language Bytecode: machine code for a virtual CPU 17 18 3

Java Virtual Machine (JVM) Step 2: Bytecode Mac JVM UNIX JVM Windows JVM Same bytecode executes on each platform Don t need to provide the source code 19 CPU (machine code) Java Virtual Machine (JVM) Emulates the CPU Ø Usually specified in software (rather than hardware) Executes the program s bytecode Ø Bytecode: virtual machine code JVMs available for each Java-supported platform Ø Enables program portability HotSpot VM Ø Code dynamically compiled to machine code Garbage Collection 20 Traditional Way Program Platform-specific Compiler Pla)orm- specific Executable Java Class Libraries Pre-defined classes Ø Included with Java Development Kit (JDK) and Java Runtime Environment (JRE) Ø View the available classes online: http://download.oracle.com/javase/8/docs/api/ Executable is not portable How does Java s approach ease distribution of software? How is (1) Java and (II) the traditional approach the same and different from Python s approach? Similar in purpose to modules included with Python 21 22 Summary of Java Platform SE 7.0 Image from http://docs.oracle.com/javase/8/docs/index.html 23 Benefits of Java Rapid development of programs Ø Large library of classes, including GUIs, Enterprise-level applications, Web applications Portability Ø Run program on multiple platforms without recompiling Statically-typed language Ø Compiling: find some errors before execution! Ø Can give performance boost by doing optimizations 24 4

Which Java is this class about? Java programming language Java class libraries Aside: JavaScript vs Java JavaScript is not Java Ø JavaScript is a scripting language, primarily embedded in HTML, executed by Web browsers Use the JVM but won t learn about how it works Ø For more information: http://docs.oracle.com/javase/specs/ Web Browser JavaScript <script type="text/javascript"> function myfunction() { return ("Hello, have a nice day!") } </script> </head> <body> <script type="text/javascript"> document.write(myfunction()) </script> 25 26 Java Development Kit JDK: Java Development Kit SDK: Software Development Kit Free from Oracle Contains Ø javac: Java compiler Ø java: Java Virtual Machine Ø Java class libraries http://www.oracle.com/technetwork/java/javase/ downloads/index.html Java Development Kit: JDK Installed on Linux machines Ø Java 1.8 should be reachable using default path Ø To see which executable you re executing use which java Should be /usr/bin/java Run java -version to determine which version you re running You can download the JDK for your machine from http://www.oracle.com/technetwork/java/ javase/downloads/index.html JRE is for running Java applications Ø Does not include the compiler 27 28 Summary Today Ø Overview of Java programming language Next time: Ø Example program Ø Data types Your To Do Ø Review UNIX commands Ø Get comfortable with the command line Run your Python scripts from the command line Ø Check out course web site 29 5