Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
INFORMATICS 1A Chapter 1 Introduction to Informatics 1A Informatics is the discipline of science which investigates the structure and properties (not specific content) of scientific information, as well as the regularities of scientific information activity, its theory, history, methodology and organization. The purpose of informatics consists in developing optimal methods and means of presentation (recording), collection, analytical-synthetic processing, storage, retrieval and dissemination of scientific information. Informatics - the sciences concerned with gathering, manipulating, storing, retrieving, and classifying recorded information. Informatics is the study and application of information technology to the arts, science and professions, and to its use in organizations and society at large. Informatics turns data and information into knowledge that people can use every day. Background Informatics is a new and rapidly developing field. It uses computing to solve the big problems: privacy, security, healthcare, education, poverty, and challenges in our environment. All Informatics applications are computer-based. Those applications are enhanced with tools and techniques from fields such as communication, mathematics, multimedia, and human-computer interaction design. Informatics differs from computer science and computer engineering because of its strong focus on the human use of computing. Students of Informatics learn skills that allow them to harness the power of computing to solve real problems that directly impact our lives and the lives of those around us. They use their technology and problem solving skills to make a difference in the world. For students interested in a career with infinite potential, Informatics stands out as a strong, flexible and dynamic field of study. The Impact of Informatics Health Construct computer health information systems by studying the needs of doctors, nurses, patients, and health care organizations. Create health networks that allow doctors and nurses to share knowledge and best practices. Create new methods of information delivery that motivate patients to follow treatment recommendations. Provide accurate digital health records available instantly when needed. Identify the best treatment for patients based on evidence drawn from national health networks. Allow patients to participate in their own care through the creation of digital Personal Health Records. Science Extend our understanding of the human genome. Develop computing applications that manage data from biotechnical and pharmaceutical collaborations. Manage and understand data collected to solve scientific challenges in the natural and social sciences. Find new and more effective personalized medicines. Track the spread of disease and find new ways to reduce its impact. Visualize scientific data in ways that aid human understanding. Human Computer Interaction (HCI) Devise theories and methods to improve human interaction with computers. Design and develop computer interfaces that connect individuals and groups. Study human intelligence to create better machine intelligence. Design desktop, mobile and medical devices that sense user needs. Create shared work applications that increase successful collaboration. Complement human abilities with artificial intelligence and robotic skills. Interactive Media and Art Create 2-D and 3-D animation and visualizations. Explore the best use of digital media to solve problems in education, health care and entertainment. Study and design the structure of information and its aesthetic presentation. Build simulation and virtual reality environments. Employ digital tools to create learning experiences that engage all the senses. Create educational computer games that immerse users in useful learning through casual and serious play. Design and develop interactive websites for business, education and medical enterprises. Model new platforms for learning. Business Develop information tools to capture and analyze data to create better business intelligence. Design decision support systems to assist business leaders. Create software tools that automate warehouses and factories. Integrate computer technology into vital business operations. Provide tools that manage global supply chains. Drive the innovation businesses need to be competitive in the 21st century. Communities Create information and communication technologies that bridge cultural gaps. Build geographic information systems that map our communities and help with urban planning. Use technology to promote government participation and voting. Connect world communities so that they may better understand one another. Provide tools to design more livable and sustainable cities. Provide social networks that facilitate social engagement. Applications of Informatics • ARTIFICIAL INTELLIGENCE (AI) • Robotics • Expert Systems • Neural Networks Chapter 2 INTRODUCTION TO SOFTWARE CONCEPTS Definition: Software is the collection of computer programs and related data that provide the instructions telling a computer what to do and how to do it. Types of Software • System Software • Application Software • Programming Software System Software System software provides the basic functions for computer usage and helps run the computer hardware and system. It includes a combination of the following: • Device drivers • Operating systems • Servers • Utilities • Window systems Application Software Application software is a set of programs that allows the computer to perform a specific data processing job for the user. It includes: • Business software • Computer aided design • Databases • Decision making software • Educational software • image editing • Industrial automation • Mathematical software • simulation software • Word processing • Video games • Spreadsheets • Telecommunications (including the Internet) Programming Software Programming software usually provides tools to assist a programmer in writing computer programs, and software using different programming languages. The tools include: • Compilers • Debuggers • Interpreters • Linkers • Text editors An integrated development environment (IDE) is a single application that attempts to manage all these functions. Chapter 3 SOFTWARE/PROGRAM DEVELOPMENT PROCESS Software systems come and go through a series of passages that account for their inception, initial development, productive operation, upkeep, and retirement from one generation to another. What is a software life cycle model? A software life cycle model is either a descriptive or prescriptive characterization of how software is or should be developed. What is a software process model? In contrast to software life cycle models, software process models often represent a networked sequence of activities, objects, transformations, and events that embody strategies for accomplishing software evolution. Software development Models Any software development process is divided into several logical stages that allow a software development company to organize its work efficiently in order to build a software product of the required functionality within a specific time frame and budget. A typical software development lifecycle comprises the following stages: • • • • • • Documentation of software development. Designing a software product. Implementing the software product. Testing the software solution. Deployment of the solution. Maintenance of the product. Software Development Methodologies Software development teams, taking into account its goals and the scale of a particular project, have a number of well-established software development models to choose from. Therefore, each software development company adopts the best-suited model, which facilitates the software development process and boosts the productivity of its team members. Waterfall Model This model is mainly apt for small and relatively easy software projects. Software companies working according to this model complete each stage in consecutive order and review its results before proceeding to another stage, which renders the waterfall model inflexible and unsuitable for complex long-term software projects. V-shaped Model This model is similar to the waterfall model, though the main emphasis is placed on the verification stage and testing, which overlap all the other stages of the software development lifecycle. Tests are planed starting from the documentation stage, then throughout integration and coding and after the actual implementation of a software product testing itself is initiated. Therefore, the V-shape is formed due to the upward direction of testing, i.e. test execution. Iterative and Incremental Development This model allows a software company to spot and mend problems at the earlier stages of the software development lifecycle, which makes the development process more flexible. This aim is achieved by breaking down the whole lifecycle into several iterations, thus handling the process in smaller portions. The iterative model allows creating the initial version of a software product straight after the first iteration. Spiral Model The essence of this model is in the underscored importance of a risk-analysis during the development process. The spiral model presupposes that each stage of the classical waterfall model is divided into several iterations, and each iteration undergoes planning and risk analysis. As a result this model allows a software company to produce working software after each iterative stage, while evaluating the risks on an ongoing basis. However, adopting the spiral model may result in notably higher costs. Extreme Programming Extreme programming (XP) is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development, it advocates frequent "releases" in short development cycles (timeboxing), which is intended to improve productivity and introduce checkpoints where new customer requirements can be adopted. Other elements of extreme programming include: programming in pairs or doing extensive code review, unit testing of all code, avoiding programming of features until they are actually needed, a flat management structure, simplicity and clarity in code, expecting changes in the customer's requirements as time passes and the problem is better understood, and frequent communication with the customer and among programmers. The methodology takes its name from the idea that the beneficial elements of traditional software engineering practices are taken to "extreme" levels, on the theory that if a little is good, more is better. Rapid Application Development (RAD) Rapid application development (RAD) is a software development methodology that uses minimal planning in favor of rapid prototyping. The "planning" of software developed using RAD is interleaved with writing the software itself. The lack of extensive pre-planning generally allows software to be written much faster, and makes it easier to change requirements. Rapid application development is a software development methodology that involves methods like iterative development and software prototyping. In rapid application development, structured techniques and prototyping are especially used to define users' requirements and to design the final system. Joint Application Development (JAD) Joint Application Development (JAD) is a technique for engaging a group or team of software developers, testers, customers, and prospective end-users in a collaborative requirements elicitation and prototyping effort. The JAD process is based on four ideas: 1. People who actually work at a job have the best understanding of that job. 2. People who are trained in software development have the best understanding of the possibilities of that technology. 3. Software-based information systems and business processes rarely exist in isolation – they transcend the confines of any single system or office and effect work in related departments. People working in these related areas have valuable insight on the role of a system within a larger community. 4. The best information systems are designed when all of these groups work together on a project as equal partners. Prototyping Prototyping is a technique for providing a reduced functionality or a limited performance version of a software system early in its development. In contrast to the classic system life cycle, prototyping is an approach whereby more emphasis, activity, and processing are directed to the early stages of software development (requirements analysis and functional specification). Software prototypes come in different forms including throwaway prototypes, mock-ups, demonstration systems, quick-and-dirty prototypes, and incremental evolutionary prototypes. Prototyping allow developers to rapidly construct early or primitive versions of software systems that users can evaluate. This has the advantage of always providing a working version of the emerging system, while redefining software design and testing activities to input specification refinement and execution. Agile Development This development model adopts the iterative model as a baseline, while putting an emphasis on the human factor, which is achieved by software team feedbacks throughout the ongoing development process. Chapter 4 SOFTWARE DEVELOPMENT ENVIRONMENTS By software development environment we mean an environment that augments or automates the activities comprising the software development cycle, including programming-in-the-large tasks such as configuration management and programming-in-the-many tasks such as project and team management. We also mean an environment that supports large-scale, long-term maintenance of software. Integrated Development Environment An integrated development environment (IDE) also known as integrated design environment or integrated debugging environment is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of: • • • • a source code editor a compiler and/or an interpreter build automation tools a debugger Types of Programming Languages Procedural Programming Procedural programming can sometimes be used as a synonym for imperative programming (specifying the steps the program must take to reach the desired state). Procedures and Modularity Modularity is generally desirable, especially in large, complicated programs. Inputs are usually specified syntactically in the form of arguments and the outputs delivered as return values. Scoping is another technique that helps keep procedures strongly modular. It prevents the procedure from accessing the variables of other procedures (and vice-versa), including previous instances of itself, without explicit authorization. Visual Programming A visual programming language (VPL) is any programming language that lets users create programs by manipulating program elements graphically rather than by specifying them textually. Event-Driven Programming Event-driven programming or event-based programming is a programming paradigm in which the flow of the program is determined by events—i.e., sensor outputs or user actions (mouse clicks, key presses) or messages from other programs or threads. Object-Oriented Programming Object-oriented programming (OOP) is a programming paradigm that uses "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction, encapsulation, modularity, polymorphism, and inheritance. Concepts of Object Oriented Programming (OOP) Class discussion Software Development Tools A programming tool or software development tool is a program or application that software developers use to create, debug, maintain, or otherwise support other programs and applications. Software development tools can be roughly divided into the following categories: • performance analysis tools • debugging tools • static analysis and formal verification tools • correctness checking tools • memory usage tools • application build tools • integrated development environment Data Representation in a Computer Environment Data input follows either of the following data type: • • • • • • • Integer (numeric e.g. 10, 11, 100, -10) Real or Single (Numeric, Floating point e.g. 10.2, -13.497) Double (Numeric, floating point e.g. 23.467537879, -123.3266479098) String (letters, characters, numbers e.g. “there were 4% of the students in the class”) Date (e.g. 10/08/2010) Variant Boolean (e.g. Yes/No or True/False) THANK YOU