0% found this document useful (0 votes)
6 views

6 sem syllabus

The document outlines the course objectives, units, practical exercises, and outcomes for several computer science courses, including Computer Networks, Compiler Design, Cryptography and Cyber Security, Distributed Computing, and Big Data Analytics. Each course covers fundamental concepts, techniques, and tools relevant to its field, with specific focus areas such as networking protocols, compiler phases, cryptographic algorithms, distributed systems, and big data management. The document also lists textbooks and references for further reading.

Uploaded by

kaviyaarul6
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

6 sem syllabus

The document outlines the course objectives, units, practical exercises, and outcomes for several computer science courses, including Computer Networks, Compiler Design, Cryptography and Cyber Security, Distributed Computing, and Big Data Analytics. Each course covers fundamental concepts, techniques, and tools relevant to its field, with specific focus areas such as networking protocols, compiler phases, cryptographic algorithms, distributed systems, and big data management. The document also lists textbooks and references for further reading.

Uploaded by

kaviyaarul6
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

CS3591 COMPUTER NETWORKS.

LTPC
3024
COURSE OBJECTIVES:
• To understand the concept of layering in networks.
• To know the functions of protocols of each layer of TCP/IP protocol suite.
• To visualize the end-to-end flow of information.
• To learn the functions of network layer and the various routing protocols
• To familiarize the functions and protocols of the Transport layer
UNIT I INTRODUCTION AND APPLICATION LAYER 10
Data Communication - Networks – Network Types – Protocol Layering – TCP/IP Protocol suite –
OSI Model – Introduction to Sockets - Application Layer protocols: HTTP – FTP – Email protocols
(SMTP - POP3 - IMAP - MIME) – DNS – SNMP
UNIT II TRANSPORT LAYER 9
Introduction - Transport-Layer Protocols: UDP – TCP: Connection Management – Flow control -
Congestion Control - Congestion avoidance (DECbit, RED) – SCTP – Quality of Service
UNIT III NETWORK LAYER 7
Switching : Packet Switching - Internet protocol - IPV4 – IP Addressing – Subnetting - IPV6, ARP,
RARP, ICMP, DHCP
UNIT IV ROUTING 7
Routing and protocols: Unicast routing - Distance Vector Routing - RIP - Link State Routing – OSPF
– Path-vector routing - BGP - Multicast Routing: DVMRP – PIM.
UNIT V DATA LINK AND PHYSICAL LAYERS 12
Data Link Layer – Framing – Flow control – Error control – Data-Link Layer Protocols – HDLC –
PPP - Media Access Control – Ethernet Basics – CSMA/CD – Virtual LAN – Wireless LAN
(802.11) - Physical Layer: Data and Signals - Performance – Transmission media- Switching –
Circuit Switching.
45 PERIODS
PRACTICAL EXERCISES: 30 PERIODS
1. Learn to use commands like tcpdump, netstat, ifconfig, nslookup and traceroute. Capture
ping and trace route PDUs using a network protocol analyzer and examine.
2. Write a HTTP web client program to download a web page using TCP sockets.
3. Applications using TCP sockets like: a) Echo client and echo server b) Chat
4. Simulation of DNS using UDP sockets.
5. Use a tool like Wireshark to capture packets and examine the packets
6. Write a code simulating ARP /RARP protocols.
7. Study of Network simulator (NS) and Simulation of Congestion Control Algorithms using NS.
8. Study of TCP/UDP performance using Simulation tool.
9. Simulation of Distance Vector/ Link State Routing algorithm.
10. Simulation of an error correction code (like CRC)
COURSE OUTCOMES:
At the end of this course, the students will be able to:
CO 1: Explain the basic layers and its functions in computer networks.
CO 2: Understand the basics of how data flows from one node to another.
CO 3: Analyze routing algorithms.
CO 4: Describe protocols for various functions in the network.
CO 5: Analyze the working of various application layer protocols.
TOTAL:75 PERIODS
TEXT BOOKS
1. James F. Kurose, Keith W. Ross, Computer Networking, A Top-Down Approach Featuring the
Internet, Eighth Edition, Pearson Education, 2021.
2. Behrouz A. Forouzan, Data Communications and Networking with TCP/IP Protocol Suite, Sixth
Edition TMH, 2022
REFERENCES
1. Larry L. Peterson, Bruce S. Davie, Computer Networks: A Systems Approach, Fifth Edition,
Morgan Kaufmann Publishers Inc., 2012.
2. William Stallings, Data and Computer Communications, Tenth Edition, Pearson Education,
2013.
3. Nader F. Mir, Computer and Communication Networks, Second Edition, Prentice Hall, 2014.
4. Ying-Dar Lin, Ren-Hung Hwang, Fred Baker, “Computer Networks: An Open Source
Approach”, McGraw Hill, 2012.
CS3501. COMPILER DESIGN L T P C3 0 2 4
COURSE OBJECTIVES:
To learn the various phases of compiler.
To learn the various parsing techniques.
To understand intermediate code generation and run-time environment.
To learn to implement the front-end of the compiler.
To learn to implement code generator.
To learn to implement code optimization.
UNIT I INTRODUCTION TO COMPILERS & LEXICAL ANALYSIS 8
Introduction- Translators- Compilation and Interpretation- Language processors -The Phases of
Compiler – Lexical Analysis – Role of Lexical Analyzer – Input Buffering – Specification of Tokens
– Recognition of Tokens – Finite Automata – Regular Expressions to Automata NFA, DFA –
Minimizing DFA - Language for Specifying Lexical Analyzers – Lex tool.
UNIT II SYNTAX ANALYSIS 11
Role of Parser – Grammars – Context-free grammars – Writing a grammar Top Down Parsing -
General Strategies - Recursive Descent Parser Predictive Parser-LL(1) - Parser-Shift Reduce
Parser-LR Parser- LR (0)Item Construction of SLR Parsing Table - Introduction to LALR Parser -
Error Handling and Recovery in Syntax Analyzer-YACC tool - Design of a syntax Analyzer for a
Sample Language
UNIT III SYNTAX DIRECTED TRANSLATION & INTERMEDIATE CODE GENERATION 9
Syntax directed Definitions-Construction of Syntax Tree-Bottom-up Evaluation of S-Attribute
Definitions- Design of predictive translator - Type Systems-Specification of a simple type Checker-
Equivalence of Type Expressions-Type Conversions. Intermediate Languages: Syntax Tree, Three
Address Code, Types and Declarations, Translation of Expressions, Type Checking, Back
patching.
UNIT IV RUN-TIME ENVIRONMENT AND CODE GENERATION 9
Runtime Environments – source language issues – Storage organization – Storage Allocation
Strategies: Static, Stack and Heap allocation - Parameter Passing-Symbol Tables - Dynamic
Storage Allocation - Issues in the Design of a code generator – Basic Blocks and Flow graphs -
Design of a simple Code Generator - Optimal Code Generation for Expressions– Dynamic
Programming Code Generation.
UNIT V CODE OPTIMIZATION 8
Principal Sources of Optimization – Peep-hole optimization - DAG- Optimization of Basic Blocks -
Global Data Flow Analysis - Efficient Data Flow Algorithm – Recent trends in Compiler Design.
45 PERIODS
LIST OF EXPERIMENTS:
1. Using the LEX tool, Develop a lexical analyzer to recognize a few patterns in C. (Ex.
identifiers, constants, comments, operators etc.). Create a symbol table, while recognizing
2. Implement a Lexical Analyzer using LEX Tool
3. Generate YACC specification for a few syntactic categories.
a. Program to recognize a valid arithmetic expression that uses operator +, -, * and /.
b. Program to recognize a valid variable which starts with a letter followed by any
number of letters or digits.
c. Program to recognize a valid control structures syntax of C language (For loop,
while loop, if-else, if-else-if, switch-case, etc.).
d. Implementation of calculator using LEX and YACC
4. Generate three address code for a simple program using LEX and YACC.
5. Implement type checking using Lex and Yacc.
6. Implement simple code optimization techniques (Constant folding, Strength reduction and
Algebraic transformation)
7. Implement back-end of the compiler for which the three address code is given as input and
the 8086 assembly language code is produced as output.
30 PERIODS. TOTAL: 75 PERIODS
COURSE OUTCOMES:
On Completion of the course, the students should be able to:
CO1:Understand the techniques in different phases of a compiler.
CO2:Design a lexical analyser for a sample language and learn to use the LEX tool.
CO3:Apply different parsing algorithms to develop a parser and learn to use YACC tool
CO4:Understand semantics rules (SDT), intermediate code generation and run-time environment.
CO5:Implement code generation and apply code optimization techniques.
TEXT BOOK:
1. Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman, “Compilers: Principles,
Techniques and Tools”, Second Edition, Pearson Education, 2009.
REFERENCES
1. Randy Allen, Ken Kennedy, Optimizing Compilers for Modern Architectures: A Dependence
based Approach, Morgan Kaufmann Publishers, 2002.
2. Steven S. Muchnick, Advanced Compiler Design and Implementation‖, Morgan Kaufmann
Publishers - Elsevier Science, India, Indian Reprint 2003.
3. Keith D Cooper and Linda Torczon, Engineering a Compiler‖, Morgan Kaufmann Publishers
Elsevier Science, 2004.
4. V. Raghavan, Principles of Compiler Design‖, Tata McGraw Hill Education Publishers, 2010.
5. Allen I. Holub, Compiler Design in C‖, Prentice-Hall Software Series, 1993.
CB3491. CRYPTOGRAPHY AND CYBER SECURITY. L T P C.
3003
COURSE OBJECTIVES:
Learn to analyze the security of in-built cryptosystems.
Know the fundamental mathematical concepts related to security.
Develop cryptographic algorithms for information security.
Comprehend the various types of data integrity and authentication schemes
Understand cyber crimes and cyber security.
UNIT I INTRODUCTION TO SECURITY 9
Computer Security Concepts – The OSI Security Architecture – Security Attacks – Security Services
and Mechanisms – A Model for Network Security – Classical encryption techniques: Substitution
techniques, Transposition techniques, Steganography – Foundations of modern cryptography:
Perfect security – Information Theory – Product Cryptosystem – Cryptanalysis.
UNIT II SYMMETRIC CIPHERS 9
Number theory – Algebraic Structures – Modular Arithmetic - Euclid‘s algorithm – Congruence and
matrices – Group, Rings, Fields, Finite Fields
SYMMETRIC KEY CIPHERS: SDES – Block Ciphers – DES, Strength of DES – Differential and
linear cryptanalysis – Block cipher design principles – Block cipher mode of operation – Evaluation
criteria for AES – Pseudorandom Number Generators – RC4 – Key distribution.
UNIT III ASYMMETRIC CRYPTOGRAPHY 9
MATHEMATICS OF ASYMMETRIC KEY CRYPTOGRAPHY: Primes – Primality Testing –
Factorization – Euler’s totient function, Fermat’s and Euler’s Theorem – Chinese Remainder
Theorem – Exponentiation and logarithm
ASYMMETRIC KEY CIPHERS: RSA cryptosystem – Key distribution – Key management – Diffie
Hellman key exchange -– Elliptic curve arithmetic – Elliptic curve cryptography.
UNIT IV INTEGRITY AND AUTHENTICATION ALGORITHMS 9
Authentication requirement – Authentication function – MAC – Hash function – Security of hash
function: HMAC, CMAC – SHA – Digital signature and authentication protocols – DSS – Schnorr
Digital Signature Scheme – ElGamal cryptosystem – Entity Authentication: Biometrics, Passwords,
Challenge Response protocols – Authentication applications – Kerberos
MUTUAL TRUST: Key management and distribution – Symmetric key distribution using symmetric
and asymmetric encryption – Distribution of public keys – X.509 Certificates.
UNIT V CYBER CRIMES AND CYBER SECURITY 9
Cyber Crime and Information Security – classifications of Cyber Crimes – Tools and Methods –
Password Cracking, Keyloggers, Spywares, SQL Injection – Network Access Control – Cloud
Security – Web Security – Wireless Security
TOTAL:45 PERIODS
COURSE OUTCOMES:
CO1: Understand the fundamentals of networks security, security architecture, threats and
vulnerabilities
CO2: Apply the different cryptographic operations of symmetric cryptographic algorithms
CO3: Apply the different cryptographic operations of public key cryptography
CO4: Apply the various Authentication schemes to simulate different applications.
CO5: Understand various cyber crimes and cyber security.
TEXT BOOKS
1. William Stallings, "Cryptography and Network Security - Principles and Practice", Seventh
Edition, Pearson Education, 2017.
2. Nina Godbole, Sunit Belapure, “Cyber Security: Understanding Cyber crimes, Computer
Forensics and Legal Perspectives”, First Edition, Wiley India, 2011.
REFERENCES
1. Behrouz A. Ferouzan, Debdeep Mukhopadhyay, "Cryptography and Network Security", 3rd
Edition, Tata Mc Graw Hill, 2015.
2. Charles Pfleeger, Shari Pfleeger, Jonathan Margulies, "Security in Computing", Fifth Edition,
Prentice Hall, New Delhi, 2015.
CS3551 DISTRIBUTED COMPUTING LTPC
3003
COURSE OBJECTIVES:
To introduce the computation and communication models of distributed systems
To illustrate the issues of synchronization and collection of information in distributed systems
To describe distributed mutual exclusion and distributed deadlock detection techniques
To elucidate agreement protocols and fault tolerance mechanisms in distributed systems
To explain the cloud computing models and the underlying concepts
UNIT I INTRODUCTION 8
Introduction: Definition-Relation to Computer System Components – Motivation – Message -Passing
Systems versus Shared Memory Systems – Primitives for Distributed Communication –
Synchronous versus Asynchronous Executions – Design Issues and Challenges; A Model of
Distributed Computations: A Distributed Program – A Model of Distributed Executions – Models of
Communication Networks – Global State of a Distributed System.
UNIT II LOGICAL TIME AND GLOBAL STATE 10
Logical Time: Physical Clock Synchronization: NTP – A Framework for a System of Logical Clocks
– Scalar Time – Vector Time; Message Ordering and Group Communication: Message Ordering
Paradigms – Asynchronous Execution with Synchronous Communication – Synchronous Program
Order on Asynchronous System – Group Communication – Causal Order – Total Order; Global
State and Snapshot Recording Algorithms: Introduction – System Model and Definitions – Snapshot
Algorithms for FIFO Channels.
UNIT III DISTRIBUTED MUTEX AND DEADLOCK 10
Distributed Mutual exclusion Algorithms: Introduction – Preliminaries – Lamport’s algorithm – Ricart-
Agrawala’s Algorithm –– Token-Based Algorithms – Suzuki-Kasami’s Broadcast Algorithm;
Deadlock Detection in Distributed Systems: Introduction – System Model – Preliminaries – Models
of Deadlocks – Chandy-Misra-Haas Algorithm for the AND model and OR Model.
UNIT IV CONSENSUS AND RECOVERY 10
Consensus and Agreement Algorithms: Problem Definition – Overview of Results – Agreement in a
Failure-Free System(Synchronous and Asynchronous) – Agreement in Synchronous Systems with
Failures; Checkpointing and Rollback Recovery: Introduction – Background and Definitions – Issues
in Failure Recovery – Checkpoint-based Recovery – Coordinated Checkpointing Algorithm -
- Algorithm for Asynchronous Checkpointing and Recovery
UNIT V CLOUD COMPUTING 7
Definition of Cloud Computing – Characteristics of Cloud – Cloud Deployment Models – Cloud
Service Models – Driving Factors and Challenges of Cloud – Virtualization – Load Balancing –
Scalability and Elasticity – Replication – Monitoring – Cloud Services and Platforms: Compute
Services – Storage Services – Application Services
COURSE OUTCOMES:
Upon the completion of this course, the student will be able to
CO1: Explain the foundations of distributed systems (K2)
CO2: Solve synchronization and state consistency problems (K3)
CO3 Use resource sharing techniques in distributed systems (K3)
CO4: Apply working model of consensus and reliability of distributed systems (K3)
CO5: Explain the fundamentals of cloud computing (K2)
TOTAL:45 PERIODS
TEXT BOOKS
1. Kshemkalyani Ajay D, Mukesh Singhal, “Distributed Computing: Principles, Algorithms and
Systems”, Cambridge Press, 2011.
2. Mukesh Singhal, Niranjan G Shivaratri, “Advanced Concepts in Operating systems”, Mc-
Graw Hill Publishers, 1994.
REFERENCES
1. George Coulouris, Jean Dollimore, Time Kindberg, “Distributed Systems Concepts and
Design”, Fifth Edition, Pearson Education, 2012.
2. Pradeep L Sinha, “Distributed Operating Systems: Concepts and Design”, Prentice Hall of
India, 2007.
3. Tanenbaum A S, Van Steen M, “Distributed Systems: Principles and Paradigms”, Pearson
Education, 2007.
4. Liu M L, “Distributed Computing: Principles and Applications”, Pearson Education, 2004.
5. Nancy A Lynch, “Distributed Algorithms”, Morgan Kaufman Publishers, 2003.
6. Arshdeep Bagga, Vi
CCS334 BIG DATA ANALYTICS
LTPC
2023
COURSE OBJECTIVES:
To understand big data.
To learn and use NoSQL big data management.
To learn mapreduce analytics using Hadoop and related tools.
To work with map reduce applications
To understand the usage of Hadoop related tools for Big Data Analytics
UNIT I UNDERSTANDING BIG DATA 5
Introduction to big data – convergence of key trends – unstructured data – industry examples of big
data – web analytics – big data applications– big data technologies – introduction to Hadoop – open
source technologies – cloud and big data – mobile business intelligence – Crowd sourcing analytics
– inter and trans firewall analytics.
UNIT II NOSQL DATA MANAGEMENT 7
Introduction to NoSQL – aggregate data models – key-value and document data models –
relationships – graph databases – schemaless databases – materialized views – distribution models
– master-slave replication – consistency - Cassandra – Cassandra data model – Cassandra
examples – Cassandra clients
UNIT III MAP REDUCE APPLICATIONS 6
MapReduce workflows – unit tests with MRUnit – test data and local tests – anatomy of MapReduce
job run – classic Map-reduce – YARN – failures in classic Map-reduce and YARN – job scheduling
– shuffle and sort – task execution – MapReduce types – input formats – output formats.
UNIT IV BASICS OF HADOOP 6
Data format – analyzing data with Hadoop – scaling out – Hadoop streaming – Hadoop pipes –
design of Hadoop distributed file system (HDFS) – HDFS concepts – Java interface – data flow –
Hadoop I/O – data integrity – compression – serialization – Avro – file-based data structures -
Cassandra – Hadoop integration.
UNIT V HADOOP RELATED TOOLS 6
Hbase – data model and implementations – Hbase clients – Hbase examples – praxis.
Pig – Grunt – pig data model – Pig Latin – developing and testing Pig Latin scripts.
Hive – data types and file formats – HiveQL data definition – HiveQL data manipulation – HiveQL
queries.
30 PERIODS
COURSE OUTCOMES:
After the completion of this course, students will be able to:
CO1:Describe big data and use cases from selected business domains.
CO2:Explain NoSQL big data management.
CO3:Install, configure, and run Hadoop and HDFS.
CO4:Perform map-reduce analytics using Hadoop.
CO5:Use Hadoop-related tools such as HBase, Cassandra, Pig, and Hive for big data analytics.
LIST OF EXPERIMENTS: 30 PERIODS
1. Downloading and installing Hadoop; Understanding different Hadoop modes. Startup scripts,
Configuration files.
2. Hadoop Implementation of file management tasks, such as Adding files and directories,
retrieving files and Deleting files
3. Implement of Matrix Multiplication with Hadoop Map Reduce
4. Run a basic Word Count Map Reduce program to understand Map Reduce Paradigm.
5. Installation of Hive along with practice examples.
7. Installation of HBase, Installing thrift along with Practice examples
8. Practice importing and exporting data from various databases.
Software Requirements:
Cassandra, Hadoop, Java, Pig, Hive and HBase.
TOTAL:60 PERIODS
TEXT BOOKS:
1. Michael Minelli, Michelle Chambers, and AmbigaDhiraj, "Big Data, Big Analytics:
Emerging Business Intelligence and Analytic Trends for Today's Businesses", Wiley,
2013.
2. Eric Sammer, "Hadoop Operations", O'Reilley, 2012.
3. Sadalage, Pramod J. “NoSQL distilled”, 2013
REFERENCES:
1. E. Capriolo, D. Wampler, and J. Rutherglen, "Programming Hive", O'Reilley, 2012.
2. Lars George, "HBase: The Definitive Guide", O'Reilley, 2011.
3. Eben Hewitt, "Cassandra: The Definitive Guide", O'Reilley, 2010.
4. Alan Gates, "Programming Pig", O'Reilley, 2011.
CCS375 WEB TECHNOLOGIES
LTPC
2023
COURSE OBJECTIVES:
To understand different Internet Technologies
To learn java-specific web services architecture
To Develop web applications using frameworks
UNIT I WEBSITE BASICS, HTML 5, CSS 3, WEB 2.0 7
Web Essentials: Clients, Servers and Communication – The Internet – World wide web – HTTP
Request Message – HTTP Response Message – Web Clients – Web Servers – HTML5 – Tables –
Lists – Image – HTML5 control elements – Drag and Drop – Audio – Video controls - CSS3 – Inline,
embedded and external style sheets – Rule cascading – Inheritance – Backgrounds – Border
Images – Colors – Shadows – Text – Transformations – Transitions – Animations. Bootstrap
Framework
UNIT II CLIENT SIDE PROGRAMMING 6
Java Script: An introduction to JavaScript–JavaScript DOM Model-Exception Handling-Validation-
Built-in objects-Event Handling- DHTML with JavaScript- JSON introduction – Syntax – Function
Files.
UNIT III SERVER SIDE PROGRAMMING 5
Servlets: Java Servlet Architecture- Servlet Life Cycle- Form GET and POST actions- Session
Handling- Understanding Cookies- DATABASE CONNECTIVITY: JDBC.
UNIT IV PHP and XML 6
An introduction to PHP: PHP- Using PHP- Variables- Program control- Built-in functions- Form
Validation. XML: Basic XML- Document Type Definition- XML Schema, XML Parsers and Validation,
XSL ,
UNIT V INTRODUCTION TO ANGULAR and WEB APPLICATIONS FRAMEWORKS 6
Introduction to AngularJS, MVC Architecture, Understanding ng attributes, Expressions and data
binding, Conditional Directives, Style Directives, Controllers, Filters, Forms, Routers, Modules,
Services; Web Applications Frameworks and Tools – Firebase- Docker- Node JS- React- Django-
UI & UX.
COURSE OUTCOMES:
CO1: Construct a basic website using HTML and Cascading Style Sheets
CO2: Build dynamic web page with validation using Java Script objects and by applying different
event handling mechanisms.
CO3: Develop server side programs using Servlets and JSP.
CO4: Construct simple web pages in PHP and to represent data in XML format.
CO5: Develop interactive web applications.
30 PERIODS
PRACTICAL EXERCISES: 30 PERIODS
List Of Experiments:
1. Create a web page with the following using HTML.
• To embed an image map in a web page.
• To fix the hot spots.
• Show all the related information when the hot spots are clicked.
2. Create a web page with all types of Cascading style sheets.
3. Client Side Scripts for Validating Web Form Controls using DHTML.
4. Installation of Apache Tomcat web server.
5. Write programs in Java using Servlets:
● To invoke servlets from HTML forms.
● Session Tracking.
6. Write programs in Java to create three-tier applications using JSP and Databases
● For conducting on-line examination.
● For displaying student mark list. Assume that student information is available in a database
which has been stored in a database server.
7. Programs using XML – Schema – XSLT/XSL.
TOTAL:60 PERIODS
TEXTBOOKS
1. Deitel and Deitel and Nieto, Internet and World Wide Web - How to Program, Prentice Hall, 5th
Edition, 2011.
2. Jeffrey C and Jackson, Web Technologies A Computer Science Perspective, Pearson
Education, 2011.
3. Angular 6 for Enterprise-Ready Web Applications, Doguhan Uluca, 1st edition, Packt
Publishing
REFERENCES:
1. Stephen Wynkoop and John Burke “Running a Perfect Website”, QUE, 2nd Edition,1999.
2. Chris Bates, Web Programming – Building Intranet Applications, 3rd Edition, Wiley
Publications, 2009.
3. Gopalan N.P. and Akilandeswari J., “Web Technology”, Prentice Hall of India, 2011.
4. UttamK.Roy, “Web Technologies”, Oxford University Press, 2011.
5. Angular: Up and Running: Learning Angular, Step by Step, Shyam Seshadri, 1st edition,
O′Reilly

You might also like