1 / 18

CSCI 1381: Foundations of Computer Science

CSCI 1381: Foundations of Computer Science. What is this course? A breadth-first introduction to Computer Science Just what is the field of CS? What types of things will I study? What types of jobs are there?

seanna
Download Presentation

CSCI 1381: Foundations of Computer Science

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSCI 1381: Foundations of Computer Science • What is this course? • A breadth-first introduction to Computer Science • Just what is the field of CS? • What types of things will I study? • What types of jobs are there? • A brief look at many concepts that you will study in-depth in future courses

  2. Why take this course? • A computer literacy course for CS Majors • If you haven’t had CSCI 1300, you may not know • the history of computers • societal impacts and ethical issues regarding a computerized society • other topics that are not usually part of traditional CS courses but are important for CS students to learn • Reinforce programming experiences from 1380 • Let you know what is to come in your CS career and give you an introduction to it now

  3. What is Computer Science? • Book definition: • “The discipline that seeks to build a scientific foundation for such topics as computer design, computer programming, information processing, algorithmic solutions of problems and the algorithmic process itself” • ACM definition: • “the systematic study of those algorithms which describe and transform information; the underpinning theory, analysis, planning, efficiency, realization and application • Our definition: • “The study of the structure, function, and applications of computers” • CS: a Science field, a Math field, an Engineering field

  4. Components of CS • Central to Computer Science are: • Hardware • Computers and other physical devices • microprocessors, memory, storage, I/O, communication • Software • Programs and Programming Languages, programming techniques and paradigms • Algorithms • creating solutions to problems, defining data structures, analysis of algorithms

  5. In CS, we are interested in the design of computer components this is referred to as Computer Architecture microprocessor design CISC, RISC, pipeline, parallel processing, etc memory layout cache, RAM, ROM, virtual memory I/O layout DMA memory access, memory mapped I/O Ideally, computer architecture would not be limited to our technology, but would be a consequence of algorithms But instead, technology often provides the basis for the architecture consider in the 50’s when vacuum tubes were used so that computers were large, unreliable and slow with very small main memories But sometimes we learn from our algorithms to produce more useful hardware cache -- based on principle of locality of reference parallel processing to more closely match the brain Study of Hardware and Architecture

  6. Algorithms • Definition: • solution to a problem at some level of specificity • recipes, instructions for model building, architectural blueprint, playing music, performing a magic trick • We focus on algorithms because there are • Many ways an algorithm can be realized so we don’t have to learn a specific program to solve a problem • Many algorithms to solve the same problem and we can analyze how efficient each algorithm is • Computers provide a platform for automatically testing an algorithm, but are not necessary for testing an algorithm • In studying algorithms, we need a representation • So, we examine languages: grammar, syntax • We represent algorithms in pseudocode, flowchart, etc • The computer represents programs in binary

  7. How to represent and store data in a natural and efficient way? What algorithms are required to interact with the data structures? Other issues include information hiding and encapsulation Example structures: Lists Queues Stacks Trees Graphs Hashing Tables Implementation methods: Arrays Linked structures with pointers Data Structures

  8. Programming paradigms Procedural Functional Objected-oriented Logical (declarative) Translation processes compiling assembling interpreting Features of PLs data abstraction process abstraction control methods machine independence and standardization Theoretical concepts syntax semantics types of languages Programming Languages

  9. Other Areas of Study • Software Engineering * • Operating systems and system software * • Data storage and retrieval * • Specific Application Areas: • Databases * • Computer Graphics • Numerical Methods • Simulation • Networks and network communications * • Artificial intelligence * • Theory of computation * • * - areas that we will examine in this course

  10. Evolution of Computers • Early computational devices • Abacus • Pascal’s calculator • Leibniz’s calculator • Joseph Jacquard’s programmable loom • Charles Babbage’s Analytical Engine and Lady Ada Augusta Lovelace • Herman Hollerith’s census counter

  11. Analytical Engine and Census Machine

  12. Into the 1940’s • Earliest computers came out of WWII research • Atansaoff-Berry machine at Iowa State (1937) • George Stibitz at Bell Labs (1940) • Mark 1 at Harvard (1944) • COLOSSUS from England • ENIAC at U. of Penn. (1946) • Very large computers that used phone relay switches and/or vacuum tubes and either were not programmable, or could not store the program

  13. We measure the progress of computers through 4 generations: 1st (1946-1959): vacuum tubes, one-of-a-kind machines, machine language, slow, unreliable, very very large 2nd (1959-1964): transistors, magnetic core memory, high level programming languages, rudimentary OS, mainframes, expensive, slow, large, more reliable 3rd (1965-1974): integrated circuits for CPU and memory, mass production, minicomputers, cheaper, full-blown OSs with time-sharing, networks, disks, monitors, interactive access, IBM mainframes became very popular, Internet 4th (1974-today): LSI, VLSI, VVLSI circuits, PCs and supercomputers, laptop and smaller computers, computer revolution, software revolution, GUIs, WWW and more 5th (????): massive parallel processing, NLP and automatic inferencing Generations

  14. Advancing Technology

  15. Evolution of CS • This field did not exist 30 years ago! • Today, it is a thriving and very large field • So what happened? • Programming was very difficult early on • Computers were not easily or always available • At the time, there was not enough experience to warrant studying programming techniques • However, as time went on and expertise developed, areas of study arose followed by new paradigms

  16. CS: A study of algorithms? • The book refers to CS as a study of algorithms • CS is more than just the study of algorithms • but just concentrating on algorithms, we have the following questions to answer: • Which problems can be solved algorithmically? • How can the discovery of algorithms be easier? • How can the techniques of representing and communicating algorithms be improved? • How can our knowledge of algorithms and technology be applied to provide better machines? • How can the characteristics of algorithms be analyzed and compared?

  17. The Role of Abstraction • Computer consist of many layers • Each built upon a lower layer that is more detailed • Hardware implemented using gates • Binary code commands gates • Programs compiled from high level code to binary • Programmer writes algorithms and converts to code • End-user sees none of this • It is important in CS to understand abstraction and the idea of tools that have been developed to support abstraction • for the creation of both hardware and software

  18. Ethical/Social/Legal Repercussions • Our society faces many open questions regarding the computerized society • ownership of software • privacy of data • liability when programs crash • who is responsible for Y2K? • understanding technology enough to make informed decisions • We will focus on social issues throughout this course • Consider questions 1 and 2 on page 13

More Related