140 likes | 297 Views
What do Computer Scientists and Engineers do?. CS101 Regular Lecture, Week 10. Computer Science. The significance of Computer Science has little to do with Computers! Computer revolution is a revolution in the way we think, and in the way we express what we think
E N D
What do Computer Scientists and Engineers do? CS101 Regular Lecture, Week 10
Computer Science • The significance of Computer Science has little to do with Computers! • Computer revolution is a revolution in the way we think, and in the way we express what we think • Computer Science is about “Computation” • Computer Science provides a framework of dealing precisely with “how to” • Computer Scientist discover ‘algorithms’ • Computer Science is not ‘Programming’ • We use programming languages to convey steps for solving a problem to a computer • Crux of a Computer Scientist’s work is time spent in discovering these steps or algorithms
An algorithm procedure or formula for solving a problem Example: Adding two positive integers a and b If b = 0, return a Increment a by 1 Decrement b by 1 Go to Step 1 Algorithms http://en.wikipedia.org/wiki/Algorithm
Software Engineering • Software engineering is concerned with the conception, development and verification of a software system • Identifying, Defining, Realizing, Verifying the required characteristics of software • Some important software characteristics: • functionality, reliability, maintainability, availability, testability, ease-of-use, portability • Important part of the work of a software engineer is preparing design and technical specifications
Software Development Process • Requirement Analysis • Eliciting, Analyzing and Recording of requirements through interviews, focus groups, prototyping, • Business intelligence needs to be captured • Sometimes also involves Business Process Re-engineering • Results in Software Requirements Specification (SRS) document • Specification • Precisely describing the software to be written • Software Architecture • An abstract representation of the system in terms of modules • Implementation • Reducing a design to code • Testing • Also referred to as Quality Assurance (QA) • Often conducted by a separate team • Black box and White Box Methodologies • Documentation • often overlooked, but extremely important • Software Training and Support • Maintenance • Very important component. About 2/3rd of all software engineering work is maintenance
Databases and Information Systems • Database: Collection of records stored in a computer in a systematic way • Collection of records, each record having several fields • Database can be queried to extract relevant data • Relational Model: • Represents all information in terms of multiple tables that are related to each other • Database Management System (DBMS), often simply called ‘database’, is the software that provides management of data • A Database Transaction: • a unit of interaction with DBMS • May involve several queries • E.g. a debit/credit transaction on an ATM • Simultaneous transactions can run into concurrency problems and need to be managed properly • Information Systems may have one or more databases at their core • Enterprise Resource Planning (ERP) systems integrate data and processes of an organization into a single system
US Department of Labor, Bureau of Labor Statistics: Job Outlook for Next 10 Years (2004-2014) [http://www.bls.gov/oco/ocos258.htm#outlook] Key Areas for the next 10 years: • Network Management • Cyber Security • Electronic Commerce • Internet technologies • Mobile Applications
Jobs in Computer Science • Computer and Information Systems Managers • plan, coordinate, and direct research and facilitate the computer-related activities of firms • They direct the work of systems analysts, computer programmers, support specialists, and other computer-related workers • Chief Technology Officers, MIS directors, Project Managers, LAN/WAN managers • Need strong communication and management skills http://www.bls.gov/oco/ocos258.htm
Jobs in Computer Science • Computer Programmers • People who actually write and maintain the code • They code according to specifications prepared by software engineers and system analysts • Software Engineers • analyze users’ needs and design, construct, test, and maintain computer applications software or systems • Computer Applications Software Engineers • Computer Systems Software Engineers • Computer Systems Analysts • Analyze the needs of an organization with regards to software, and prepare software requirement specifications (SRS) • Plan and develop new computer systems
Jobs in Computer Science • Computer Support Specialists and System Administrators • Provide technical support to keep an organizations computer systems running • Computer Scientists: • Theoreticians, inventors, researchers • Database Administrators • Work with DBMS to determine ways to organize and store data • Network Administrators • Design and maintain networks, deal with security issues and constant threats from hackers
Computer Engineering • A discipline that combines both electrical engineering and computer science • They may be considered as electrical engineers with more training in computer hardware and software, but lesser training in some areas of EE, like device physics, or power electronics • Computer Programming + Hardware • A lot of programming that a computer engineer may do may be in low-level languages like assembly • Computer Engineers design computer hardware, and systems • Areas of work: Microprocessor design, Embedded systems, interfacing etc. • Embedded Systems: a special purpose system in which the computer is completely encapsulated in the device it controls • Interfacing: Communication boundary between computer and other devices • Examples: DSP (sound), genome sequencing (chemistry), Industrial Process Control, Motorway example, CNC Machining, VLSI design, FPGA systems, robotics
An embedded System http://en.wikipedia.org/wiki/Image:ADSL_modem_router_internals_labeled.jpg
References • http://en.wikipedia.org/wiki/Algorithm • http://en.wikipedia.org/wiki/Software_development_process • http://en.wikipedia.org/wiki/Software_requirements_analysis