This test
is designed to evaluate
the knowledge-base of a
person as well as the area
of strength in the field
of Computer Science. While
no student guide is available
in booklet form as yet,
the subject components given
below are included keeping
in view the core concepts
of computer science as well
as emerging dimensions and
areas of study in this field.
The candidates will be tested
from these areas and can
use these as a guide for
the preparation of the test.
A curriculum for the Computer
Science, Subject Test is
designed by various experts
of Computer Science.
Various
books are recommended by
the Computer Science-Curriculum
Committee, which may be
a source of great help for
you.
Architecture
and Organization
The computer lies at the
heart of computing, without
it most of the computing
disciplines today would
be a branch of theoretical
mathematics. To be a professional
in any field of computing
today, one should not regard
the computer as just a black
box that executes programs
by magic. All students of
computing should acquire
some understanding and appreciation
of a computer system’s
functional components, their
characteristics, their performance,
and their interactions.
There are practical implications
as well. Students need to
understand computer architecture
in order to structure a
program so that it runs
more efficiently on a real
machine. In selecting a
system to use, they should
to able to understand the
trade-off among various
computer components.
Recommended Books:
- Computer Organization
& Architecture By
William Stallings
- Structured Computer
Organization by Andrew
S. Tanenbaum
Operating Systems
An operating system defines
an abstraction of hardware
behavior with which programmers
can control the hardware.
It also manages resource
sharing among the computer’s
users. The topics in this
area explain the issues
that influence the design
of contemporary operating
systems. Courses that cover
this area will typically
include a laboratory component
to enable students to experiment
with operating systems.
Over the years, operating
systems and their abstractions
have become complex relative
to typical application software.
It is necessary to ensure
that the student understands
the extent of the use of
an operating system prior
to a detailed study of internal
implementation algorithms
and data structures. Therefore
these topics address both
the use of operating systems
(externals) and their design
and implementation (internals).
Many of the ideas involved
in operating system use
have wider applicability
across the field of computer
science, such as concurrent
programming. Studying internal
design has relevance in
such diverse areas as dependable
programming, algorithm design
and implementation, modern
device development, building
virtual environments, caching
material across the web,
building secure and safe
systems, network management,
and many others.
Recommended Books:
- Operating Systems Internals
& Design Principles
by WilliamStallings
- Operating Systems Design
and Implementation by
Andrew S. Tanenbaum
Software Engineering
Software engineering is
the discipline concerned
with the application of
theory, knowledge, and practice
for effectively and efficiently
building software systems
that satisfy the requirements
of users and customers.
Software engineering is
applicable to small, medium,
and large-scale systems.
It encompasses all phases
of the life cycle of a software
system. The life cycle includes
requirement analysis and
specification, design, construction,
testing, and operation and
maintenance. Software engineering
employs engineering methods,
processes, techniques, and
measurement. It benefits
from the use of tools for
managing software development;
analyzing and modeling software
artifacts; assessing and
controlling quality; and
for ensuring a disciplined,
controlled approach to software
evolution and reuse. Software
development, which can involve
an individual developer
or a team of developers,
requires choosing the tools,
methods, and approaches
that are most applicable
for a given development
environment. The elements
of software engineering
are applicable to the development
of software in any computing
application domain where
professionalism, quality,
schedule, and cost are important
in producing a software
system.
Recommended Books:
- Software Engineering
by R.S. Pressman (This
book has wide coverage
of SE topics.)
- Software Engineering
by Somerville (The book
emphasizes on practical
SE )
Net-Centric Computing
With the exponential use
of the Internet and growth
of Web-based applications,
the subject of “Communications
and Computer Networks”
has got new dimensions.
Now the knowledge base for
a CS professional is not
limited to LANs but it embraces
the topics relating to infrastructure
of e-commerce and inclusion
of Wireless and Satellite-based
networks. We have adopted
IEEE/ACM CC-2001 Net-Centric
Computing nomenclature instead
of Computer Networking as
the former has broad coverage
of the modern topics.
Recommended Books:
- Computer Networks by
Andrew S. Tanenbaum
- Data & Computer
Communications by Williams
Stallings
Discrete
Structures
Discrete structures include
important material from
such areas as set theory,
logic, graph theory, and
combinatorics. The material
in discrete structures is
enveloping in the areas
of data structures and algorithms
but appears elsewhere in
computer science as well.
For example, Graph theory
concepts are used in networks,
operating systems, and compilers.
Set theory concepts are
used in software engineering
and in databases. As the
field of computer science
matures, more and more sophisticated
analysis techniques are
being brought to bear on
practical problems. To understand
the computational techniques
of the future, today’s
students will need a strong
background in discrete structures.
Recommended Books:
- Discrete Mathematics
and its applications by
Kenneth H. Rosen
- Discrete Mathematics
with applications by Susanna
S. Epp
Programming Languages
A programming language
is a programmer’s
principal interface with
the computer. More than
just knowing how to program
in a single language, programmers
need to understand the different
styles of programming promoted
by different languages.
In their professional life,
they will be working with
many different languages
and styles at once, and
will encounter many different
languages over the course
of their careers. Understanding
the variety of programming
languages and the design
tradeoffs between the different
programming paradigms makes
it much easier to master
new languages quickly. Understanding
the pragmatic aspects of
programming languages also
requires a basic knowledge
of programming language
translation and runtime
features such as storage
allocation.
Recommended Books:
- Programming Languages
by Pratt
- Principles of Object
Oriented Analysis &
Design by James Martin
Programming Fundamentals
Fluency in a programming language
is a prerequisite to the study
of most of computer science.
Knowledge area consists of
those skills and concepts
that are essential to programming
practice independent of the
underlying paradigm. Includes
following basic skills like
analyzing and explaining the
behavior of simple programs
involving the fundamental
programming constructs; modifying
and expanding short programs
that use standard conditional
and iterative control structures
and functions; Designing,
implementing, testing, and
debugging programs that involve
simple I/O, standard conditional
and iterative structures,
and the definition of functions.
It also includes choosing
appropriate conditional and
iteration constructs for a
given programming task; application
of structured programming
techniques; using functions
and functions parameter passing
techniques. Programming fundamentals
second major part is composed
of basic concepts of data
structures. Data Structures
discusses how to model real
life objects in the computer
memory and strategies involved
to perform different operations
on those objects. Data structures
knowledge is essential to
solve and simulate real life
problems using computer as
a problem solving tool. Essential
knowledge base of data structures
is briefly discussed in next
few lines. Representing and
applying primitive data types
and built-in data structures;
how different data structures
like arrays, records, strings,
linked lists, stacks, queues,
and hash tables are allocated
and used in memory. It also
includes comparing alternative
implementations of data structures
with respect to performance;
writing programs that use
different data structures;
comparing and contrasting
the costs and benefits of
dynamic and static data structure
implementations and choosing
the appropriate data structure
for modeling a given problem.
Third portion of programming
fundamentals focuses on recursion
which provides basic skills
to divide and conquer complex
problem and it also provides
bases for code reusability.
Recommended Books:
- How to Program C++ by
Deitel and Deitel
- Programming C/C++ by
Robert Lafore
- Data Structures and
Algorithm Analysis by
Mark Allen Weiss
- Data Structures and
Algorithm by Robert Lafore
- Data Structures using
c and C++ by Yedidyah
Langsum, Moshe
- J. Augenstein and Aaron
M. Tenembaum
Algorithm and Complexity
Algorithms are fundamental
to computer science and
software engineering. The
real world performance of
any software system depends
on only two things; one
the algorithms chosen and
two the suitability and
efficiency of the various
layers of implementation.
Good algorithm design is
therefore crucial for the
performance of all software
systems. Moreover, the study
of algorithms provides insight
into the intrinsic nature
of the problem as well as
possible solution techniques
independent of programming
language, programming paradigm,
computer hardware, or any
other implementation aspect.
An important part of computing
is the ability to select
algorithms appropriate to
particular purposes and
to apply them, recognizing
the possibility that no
suitable algorithm may exist.
This facility relies on
understanding the range
of algorithms that address
an important set of well-defined
problems, recognizing their
strengths and weaknesses,
and their suitability in
particular contexts. Efficiency
is a pervasive theme throughout
this area. Major areas of
essential knowledge are
fundamental computing algorithms,
automata theory, basic algorithm
analysis and algorithmic
strategies. It includes
Simple numerical algorithms,
sequential and binary search
algorithms; quadratic sorting
algorithms; O(NlogN) sorting
algorithms; hash tables;
binary search trees; representations
of graphs, adjacency list
and adjacency matrix representations;
Depth- and breath-first
traversal; shortest path
algorithms, Dijkstra’s,
and Floyed’s algorithms.
Automata theory includes
regular sets, context-free,
context-sensitive, and recursively
enumerable languages; converting
among equivalently powerful
notations for a language,
including among DFAs, NFAs,
and regular expressions,
and between PDAs and CFGs;
concepts of turning machines.
Basic algorithmic analysis
includes asymptotic analysis
of upper and average complexity
bounds; best average and
worst case behaviors; standard
complexity classes; time
and space tradeoffs in algorithms;
recurrence relations to
analyze recursive algorithms.
Recommended Books:
- Design and Analysis
of Algorithms By Jefry
D. Smith
- Introduction to Automata
and Language Theory by
John E.
Hopcroft, Rajeev Motwani
and Jeffrey D. Ullman
Information Management
Information
management system is the
backbone of computer science.
Almost in all fields where
computer is used information
management is required.
To completely test the capabilities
of a CS student, this is
one of the most important
parts. Basic objective of
including IM is to compare
and contrast information
with data and knowledge,
summarize the evolution
of information systems from
early vision up through
modern offerings, distinguishing
their respective capabilities
and future potentials. Check
the know-how in the basic
goals, functions, models,
components, applications,
social impact of database
systems and major DBMS function.
It also measures the basic
principles of relational
data model, object-oriented
model, preparing relational
schema from a conceptual
model using entity relationship
model. Judge the complete
hold of student on SQL,
normalizations and query
optimization.
Recommended
Books:
- Database Systems by
C.J. Date
- Modern Database Management
by Fred R McFadden &
Jeffry A. Hoffer
Computational Science
and Numerical Methods
Computational Science and
Numerical Methods has constituted
a major area of Computer
Science it increase the
problem- solving power.
This area offers exposure
to many valuable ideas and
techniques, including precision
of numerical representation
and error analysis. It tests
the capabilities to identify
the error, stability, machine
precision concepts and the
inexactness of computational
approximations. In addition
to that it helps to analyze
the capabilities to code,
test, and debug programs
that implement numerical
methods and operation research.
Recommended
Books:
- Numerical Analysis by
S. A. Butti
- Operation Research by
Taha, Hamdy A
Top