Tuesday, July 15, 2008

Computer Science

Name of Discipline: Computer Science

Computer Science Subject Matter: Computer Science is a systematic body of knowledge with a foundation in theory. It is concerned with practical problems concerning the design and construction of useful systems, within the constraints of cast and acceptability.

Definition of Computer Science: According to the Oxford’s Dictionary of computing, computer science is defined as “the study of computers, their underlying principles and use. It comprises topics such as: programming; information structures; software engineering; programming languages; compilers and operating systems; hardware design and testing; computer system architecture; computer networks and distributed systems; systems analysis and design; theories of information, systems, and computation; applicable mathematics and electronics; computing techniques (e.g. graphics, simulation, artificial intelligence, and neural networks); applications; social, economic, organizational, political, legal, and historical aspects of computing” (Illingworth).

Sub-Fields within Computer Science: While wikipedia is generally a place to avoid for research topic, its subdivision of Computer Science is one of the best available. Wikipedia break Computer Science into 14 different sub-fields.

Mathematical Foundation – a branch of computer science which focuses on the mathematical logic of computer science and many mathematical theories such as number, graph, type and category theory. It also looks into areas such as computational geometry which attempts to solve problem stated in terms of geometry and numerical analysis which his concerned with the limitations of floating point computations.

Theory of computation – “is the branch of computer science that deals with whether and how efficiently problems can be solved on a model of computation, using an algorithm.” (Theory of computation)

Algorithms and data structures – a branch of computer science which focuses on the complexity of algorithms, and the logical process used and the efficiency of computational processes.

Programming languages and compilers – a branch of computer science which deals with programming languages which express algorithms and the compilers and interpreters used to allow the computer to translate the program and run the program properly.

Concurrent, parallel and distributed systems – this branch focuses on using a computer of multiple computers to run multiple executions or focus on accomplishing a common objective or task and the theory behind it.

Software engineering – this branch focuses on using computer languages to design algorithms and methods to run a given task. This can include reverse engineering to understand how software is developed and also the testing of the software.

System architecture – this branch focuses on implementing computer to use the hardware of the system and include such things as operating systems which manages computer programs.

Communications – this branch focuses on the transfer of information between networks and encryptions used to protect the information transmitted. It also deals with digital audio and voice recognition applications.

Databases – this branch deals with computer created databases. It deals with the algorithms used for searching and processing information and extraction of relevant data from a given database.

Artificial intelligence – this branch deals with intelligence or artificially created life made by humans. This can includes things such as automated reasoning, computer vision, machine learning, computational linguistics and robotics.

Visual rendering (or Computer graphics) this branch deals with the algorithms used for creating computer graphics and the processing of information of images through computational means.

Human-Computer Interaction, Scientific computing – this branch focuses on the interaction between humans and computers. It is constantly trying to improve the user interfaces of computers for the public use.

Scientific computing – This branch deals with scientific uses of computers in braches such as chemistry, physics and neurosciences. These branches use computers to compute and model theories in these sciences.

Didactics of computer science/informatics The subfield didactics of computer science focuses on cognitive approaches of developing competencies of computer science and specific strategies for analysis, design, implementation and evaluation of excellent lessons in computer science.” (Computer Science)

Research Methods: Building models and running simulations is one of the main research methods used in Computer Science. Researchers in computer science require lots of money to build models which faithfully captures the relevant aspects of the modeled system being researched. After the model is completed the researcher needs to run numerous simulation experiments and generalize the results to the real system. An example of this is the 3D cave here at Virginia Tech. Many graduate students interested in Human Computer Interactions request the use of this system, and create programs (or models) to be used on the VT-Cave system. From there, the students run their program using their model with subjects (I have actually participated in a test with the VT-Cave before) and observe to see if their model implementation is effective or not.

Key Concepts:

  • Programming Languages: these languages are used by computer scientist to create software which runs on computers. There are many different languages which contain all different type of pros and cons. There are five basic concepts in programming languages. “These concepts are variables, expressions, control structures, input/output, and abstraction” (Virginia Tech CS Online Modules). Programmers use these languages to translate plain English into Pseudo Code which the computer then translates into assembly code via a compiler and the processor translates into machine code.
  • Data Structures: these structures compare “how data is actually stored in a computer with the abstract structures that programmers use” (Virginia Tech CS Online Modules). These structures allow the programmer to know how information is stored and allows the users to find, add and remove data from the structure. Each structure has its pros and cons and depending on the situation, one may be better than another. There is no set amount of data structures as new structures can be created by any user or modified by different languages.
  • Algorithms: an algorithm is defined as “a set of instructions for solving a problem” (Virginia Tech CS Online Modules). In computer science there are many algorithms which are possible solution to problems. Programmers need to think through the situation and choose or create an algorithm which efficient and does not consume too much resources. Algorithms are the basis of good programming and require a lot of time and thought when choosing and designing one.

Leading Theories:

  • Computational complexity theory: This theory deals with the question about how efficient can a problem be solved. It looks into the resources required to execute a given algorithm and examines the difficulty of creating efficient algorithms for specific computational problems.
  • Computability theory: While this theory is a bit similar to complexity theory, it deals with the issue if a computational problem is at all solvable by any models of computations. It also looks at the limits of the given models and attempts to define unreasonable models of computations such as infinite loops.

Key Books/Seminal Texts:

  • Childs, Jeffrey. C++ : Classes and Data Structures. Upper Saddle River, NJ: Pearson Prentice Hall, 2008.
    This book is a great reference book to programming in the computer language of C++ which is a commonly used language today. It gives relevant examples and worked out example to help provide code and help to people who want to become better programmers.
  • Homer, Steven, and Alan Selman. Computability and complexity theory. New York, NY: Springer, 2001.
    This books talks about the theory of which computing provides computer science with concepts, models, & formalisms for reasoning about the resources needed to carry out computations. It also talks about the efficiency of computations and provides tools to measure and compare different solutions.
  • Meyer, John-Jules. Epistemic logic for AI and computer science. Cambridge, NY: Cambridge University Press, 1995.
    This book talks about how Epistemic logic has grown from its philosophical beginnings to find diverse applications in computer science. It talks about the mathematic used and the logic in the creation and application of artificial intelligence. It discusses some topics such as common knowledge, distributed knowledge, explicit and implicit belief, interplays between knowledge and time, and knowledge and actions.

Key Thinkers and Practitioners:

  • Bill Gates (1955-Present) is creator of one of most known and used computer company, Microsoft. Bill Gates was important for revolutionizing the PC from strictly researching use at colleges and big businesses to bring it to everyday normal people and the home of many people. Microsoft is the creator of the Windows operating system, and is the most widely used operating system today. While Bill Gates is no longer the head of Microsoft and work only part time for it, he still influences many computer scientists even today.
  • Steve Jobs (1955-Present) is one of the co-founder of apple computers. While Steve Jobs did not start of his career successfully. Apple was considered a niche market and not user friendly before, but because of Steve Jobs innovation, he has changed the image of Apple Computers. Steve Job changed the way people interacted with the computer and made it easy to use. This has impacted the current computer industry as many companies such as Microsoft are trying to follow in the steps of Steve Job to gain or not lose their competitive advantage in their market.
  • Alan Turing (1912-1954) helped pioneer the concept of the digital computer. He envisioned a machine which he named, the Turing machine, which is essentially the same as today’s multi-purpose computers. He developed many proofs which are used in computability theory to this day.
  • Alan Curtis Kay (1940-Present) is a pioneer of the object-oriented programming movement and windowing graphical user interface used by many computer scientists today. He led a team that developed Smalltalk which is an object-oriented programming language used in the 1980’s. He also made many fundamental contributions to personal computing.
  • James Gosling (1955-Present) is famous for developing the Java programming language which is considered to be the most widespread portable computing language ever developed. He also made major contributions to several other software systems, such as NeWS and Gosling Emacs.
  • George Boole (1815-1864) was a British mathematician and philosopher who invented the Boolean algebra. This is basis of all modern computer arithmetic known as digital logic. Because of this, he is regarded in hindsight as one of the founders of the field of computer science.

Professional Academic Journals:

  • Artificial Intelligence
    This journal reports resulted achieved from various test in the field of artificial intelligence, and computational accounts of aspects of intelligence such as, automated reasoning, computational theories of learning, heuristic search, knowledge representation, qualitative physics, signal, image and speech understanding, robotics, natural language understanding and software and hardware architectures for AI. It also proposes new ways to look at problems in the field of AI. This journal is aimed and people who are interested in AI and its related fields.
  • Computer Standards & Interfaces
    This journal provides information about activities and progress on the definition of computer standards, software quality, interfaces and methods, at national, European and international levels. It also publishes critical comments on standards and standards activities. It is a good journal to stimulate relevant research as it provides a specialized refereed medium. This journal is aimed for people who are interested in Human Computer Interaction.

Professional Academic Associations:

  • Association for Computing Machinery – http://www.acm.org
  • IEEE Computer Society – http://www.computer.org
  • The Computing Research Association – http://www.cra.org/

Worked Cited

Illingworth, Valerie. "Computer Science."Dictionary of computing. 5th ed. 2004

"Theory of computation." Wikipedia. 1 July 2008. 15 Jul 2008 .

"Computer Science." Wikipedia. 15 July 2008. 15 Jul 2008 .

"Virginia Tech CS Online Modules." Animations to Assist Learning Some Key Computer Science

Topics.Virginia Tech. 15 Jul 2008 .

Perrault, C.R. , A.G. Cohn . "Artificial Intelligence." Science Direct 1970 15 Jul 2008.

Thuraisingham , B.. "Computer Standards & Interfaces" Science Direct 1982 15 Jul 2008 .

1 comment:

Donna said...

this is well done Josh -- great how you made connections to VT