0% found this document useful (0 votes)
1K views10 pages

Curriculum - BITS BSC CS

The document outlines the curriculum for a Bachelor of Science in Computer Science degree. It details the core and elective courses required across six semesters, including course codes, titles, and credit units for subjects like programming, data structures, databases, algorithms, and more.

Uploaded by

jinop79764
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1K views10 pages

Curriculum - BITS BSC CS

The document outlines the curriculum for a Bachelor of Science in Computer Science degree. It details the core and elective courses required across six semesters, including course codes, titles, and credit units for subjects like programming, data structures, databases, algorithms, and more.

Uploaded by

jinop79764
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

Bachelor of Science in Computer Science

Birla Institute of Technology & Science, Pilani


CURRICULUM
Foundation courses

COURSE NO. COURSE TITLE UNITS


MATHEMATICS FOUNDATION

BCS ZC219 Discrete Mathematics 3

BCS ZC230 Linear Algebra and Optimization 3

BCS ZC233 Probability and Statistics 3

BCS ZC112 Introduction to Logic 2

SCIENCE & ENGINEERING FOUNDATION

BCS ZC223 General Biology$ 3

BSC ZC240 General Physics$ 3

BCS ZC111 Basic Electronics 2

HUMANITIES FOUNDATION

BCS ZC151 Writing Practice 3

BCS ZC113 Online Social Media# 2

BCS ZC114 Video Games - Technology and Social Impacts# 2

OTHER COURSES

BCS ZC220 Environmental Studies 3

BCS ZC229 Introduction to Economics@ 3

BCS ZC235 Science, Technology and Modernity@ 3

$
● One course must be chosen from this list of courses (Foundation Option 1 in the program chart)
#
● One course must be chosen from this list of courses (Foundation Option 2 in the program chart)
@
● One course must be chosen from this list of courses (Foundation Option 3 in the program chart)
Core Courses

COURSE NO. COURSE TITLE UNITS


BCS ZC313 Introduction to Programming 4
BCS ZC228 Introduction to Computing Systems 3
BCS ZC216 Computer Systems and Performance 3
BCS ZC215 Command Line Interfaces and Scripting 3
BCS ZC311 Data Structures and Algorithms 4
BCS ZC212 Algorithm Design 3
BCS ZC316 Object Oriented Programming 4
BCS ZC317 Relational Databases 4
BCS ZC234 Programming for Mobile Devices 3
BCS ZC238 Web Programming 3
BCS ZC232 Operating Systems 3
BCS ZC236 Software Design Principles 4
BCS ZC214 Building Database Applications 3
BCS ZC211 Software Development Practices 3
BCS ZC231 Network Programming & Client-Server Programming 3
BCS ZC222 Formal Languages and Applications 3

Electives

COURSE NO. COURSE TITLE UNITS


BCS ZC224 Graphs and Networks 3
BCS ZC213 Automata and Computability 3
BCS ZC221 Experimental Algorithmics 3
BCS ZC227 Introduction to Bioinformatics 3
BCS ZC217 Data Visualization 3
BCS ZC312 Introduction to Data Analytics 4
BCS ZC315 Multicore and GPGPU Programming 4
BCS ZC237 TCP/IP and Internet 3
BCS ZC226 Information Security 3
BCS ZC225 Human Computer Interaction 3
BCS ZC218 Designing Multimodal Interfaces 3
BCS ZC314 Modern Databases 4
Semester breakup:

FIRST SEMESTER:

COURSE NO. COURSE TITLE UNITS


BCS ZC313 Introduction to Programming 4
BCS ZC219 Discrete Mathematics 3
BCS ZC230 Linear Algebra and Optimization 3
BCS ZC228 Introduction to Computing Systems 3
BCS ZC111 Basic Electronics 2
BCS ZC239 Writing Practice 3
Units 18

SECOND SEMESTER:

COURSE NO. COURSE TITLE UNITS


BCS ZC311 Data Structures and Algorithms 4
BCS ZC316 Object Oriented Programming 4
BCS ZC215 Command Line Interfaces and Scripting 3
BCS ZC233 Probability and Statistics 3
BCS ZC112 Introduction to Logic 2
- Foundation Option 1 3
Units 19

THIRD SEMESTER:

COURSE NO. COURSE TITLE UNITS


BCS ZC212 Algorithm Design 3
BCS ZC317 Relational Databases 4
BCS ZC238 Web Programming 3
BCS ZC236 Software Design Principles 4
BCS ZC216 Computer Systems and Performance 3
- Foundation Option 2 2
Units 19
FOURTH SEMESTER:

COURSE NO. COURSE TITLE UNITS


BCS ZC232 Operating Systems 3
BCS ZC214 Building Database Applications 3
BCS ZC234 Programming Mobile Devices 3
BCS ZC220 Environmental Studies 3
BCS ZC222 Formal Languages and Applications 3
- Discipline Elective #1 3
Min Units 18

FIFTH SEMESTER:

COURSE NO. COURSE TITLE UNITS


BCS ZC211 Software Development Practices 3
BCS ZC231 Network Programming and Client-Server Programming 3
- Discipline Elective #2 3/4
- Discipline Elective #3 3/4
BCS ZC241T Study Project 5
Units 17-19

SIXTH SEMESTER:

COURSE NO. COURSE TITLE UNITS


- Foundation Option 3 3
- Discipline Elective #4 3/4
BCS ZC428T Project 10
Units 16-17
Course Descriptions
BCS ZC219 Discrete Mathematics (3 units)
Sets & operation on sets; relations, functions, Recursive functions, sequences and summations, Mathematical
Induction, Proof Methods (direct, indirect, proof by contradiction), principle of inclusion & exclusion, pigeonhole
principle; Permutations and Combinations; Recurrence Relations; basic algebraic structures and their applications.
Introduction to graphs, properties and applications

BCS ZC230 Linear Algebra and Optimization (3 units)


Vector and matrix algebra, systems of linear algebraic equations and their solutions; eigenvalues, eigenvectors and
diagonalization of matrices; Formulation of linear programming problems, Simplex method, Big-M method, two
phase method, Sensitivity analysis, Revised and Dual Simplex Methods.

BCS ZC233 Probability & Statistics (3 units)


Probability spaces; conditional probability and independence; random variables and probability distributions;
marginal and conditional distributions; independent random variables; mathematical expectation; mean and
variance; binomial, Poisson and normal distributions; sum of independent random variables; law of large numbers;
central limit theorem (without proof); sampling distribution and test for mean using normal and student's
t-distribution; test of hypothesis; correlation and linear regression.

BCS ZC112 Introduction to Logic (2 units)


Propositional logic – syntax, semantics, natural deduction, satisfiability & validity, predicate or first order logic –
syntax, semantics, proof theory satisfiability & validity, completeness & compactness, proof techniques,
Undecidability & incompleteness; Godel’s incompleteness theorem; overview of applications in program
verification, knowledge representation.

BCS ZC151 Writing Practice (3 units)


Introduction to academic writing – Purpose, Type, Features, Originality, integrity and plagiarism; Paragraph writing –
Structure, Development of ideas, Linking paragraphs together, Introduction, opening sentence and conclusion;
Elements of writing – Argument and discussion, Cause and effect, Comparison, Generalizations, Problems and
solution, Process writing, Visual information, Accuracy in writing, Academic vocabulary, Caution,
Conjunction/Linkers/Signposting, Punctuation, Passives, Tense forms, Summarizing and paraphrasing; Writing
models - E-mails (formal), Short essays (2-paragraph essay, thesis statement), and Reports (Introduction, Methods,
Results, Conclusion, Abstract).

BCS ZC220 Environmental Studies (3 units)


Environment, human population, and industrialization; natural resources and the impact of man-made activities on
them; structure and function of ecosystem, population ecology, biodiversity and its conservation, environmental
pollution, social issues and the environment, and environmental impact assessment.

BCS ZC223 General Biology (3 units)


Living systems and their properties; major biological compounds; basic physiological processes; introduction to
genetics; environment and evolution.

BCS ZC240 General Physics (3 units)


Philosophy of Science; Newton’s laws of motion; Work Energy, Impulse and Momentum; Equilibrium; Moment of a
force; Rotation; Periodic motion; First law of thermodynamics; Second law of thermodynamics; Electromagnetic
waves; Interference and diffraction; Polarization; Relativistic mechanics; Photons, Electrons and Atoms; Quantum
Mechanics; Atoms, Molecules and Solids; Nuclear Physics.
BCS ZC111 Basic Electronics (2 units)
Course covers basic passive circuit elements, dependent and independent sources, network theorems, circuit
analysis techniques and response of first and second order circuits. Semiconductors - operation of diodes, bipolar
junction transistors and field effect transistors. Biasing techniques and transistors. Introduction to operational
amplifiers and applications.

BCS ZC113 Online Social Media (2 units)


Social media - evolution, definition, classification, Present social media landscape; Different kinds of online
community and social structure; benefits of social media for individuals, business and society; impacts of people
and artificial intelligence on social media; Impacts of Social media - personal, professional, social aspects with
cases; Concerns (Privacy, authenticity, Informed Consent, Anonymity, Risks), Safety.

BCS ZC114 Video Games - Technology and Social Impacts (2 units)


Video Games- introduction, play and game- deconstructing video games: narrative structures of videogames,
critiquing rules in videogames, immersion and materiality- puzzles, drama and socio-technical system of video
games- Themes of videogames: violence, addiction, language, sexuality, gender, identity, communities, values and
ethics, game genres: e-sports, indie games, serious games-gamification, game design.

BCS ZC313 Introduction to Programming (4 units)


Basic representation of data and how to process data using the representation inside a computer. Techniques for
specifying data, operations on data, and problem-solving using C programming language. Systematic techniques
and approaches for constructing programs.

BCS ZC228 Introduction to Computing Systems (3 units)


This course teaches a beginner what a computer is and how it can be programmed. The course starts with basic
building blocks required to understand the structure of a computer: numbers, bits, structures to implement
operations on numbers, and structures to control the execution of commands by a computer. The course progresses
to introduce logic gates, and combinational and sequential circuits. It introduces a simple processor design with a
small instruction set architecture and basic assembly programming with that processor.

BCS ZC216 Computer Systems and Performance (3 units)


Processor Architecture (Instruction Set Level)- Different types of instructions AL, Memory Access, Branch/Jump;
Straight Line Programs vs. Branches: Different Loop Structures, Performance of Loops, Nested Conditionals, Inner
Loops – Examples; Cost of Procedure Calls vs. goto statements; Memory Hierarchy: Motivation – Cost vs. Size vs.
Access Time. Main Memory and Cache. Write-through vs. Write-back Cache. Access Time Calculation and Hit Ratio;
Locality of Reference; Paging (of Main Memory) and Page Faults, Performance Impact; Procedure Calls and Space;
Hard Disks and Disk Access (Disk Access Time vs. RAM access Time.); Disk IO and File IO, Buffered vs. Unbuffered IO.
Performance: Read vs. Write vs. Read-and-Write; Disk Locality. Sequential Access vs. Random Access in Files -
Examples; Flash / SSD Storage: SSD access and access times; Write limitations; Flash File Systems; Performance
Impact.

BCS ZC215 Command Line Interfaces and Scripting (3 units)


Files and Directory, internals of a file system, inode structure, block I/O; File commands, pipes and filters,
programming with commands; Shell and interpretation of commands, programming with shell scripts, feature
usage, interaction with I/Os; Systems calls, usage with C Programming, file system and I/O calls.
BCS ZC311 Data Structures and Algorithms (4 units)
Introduction to Asymptotic Notations, Solving Recurrences (substitution method, iteration method, master
theorem), Abstract Data Types, Linear Data Structures (Stacks, Queues, and Linked Lists), Non-Linear Data
Structures-Heap, Hash Tables, Binary Search Trees, Balanced Binary Search Trees, Sorting Algorithms (insertion sort,
selection sort, merge sort), Graph Data Structures (Adjacency List and Adjacency Matrix), Graph Traversal algorithms,
Topological sort, Strongly connected components.

BCS ZC212 Algorithm Design (3 units)


Effective construction and analysis of algorithms. Understanding, application, and implementation of algorithm
design techniques like divide-and-conquer, greedy, dynamic programming, and back-tracking. Worst case and
average case analysis of algorithms. Basic notions of complexity classes – P, NP, and NP-complete and Reduction.

BCS ZC316 Object Oriented Programming (4 units)


Object orientation concepts, theories and principles; fundamental concepts of the object model: classes, objects,
methods and messages, encapsulation and inheritance, interface and implementation, reuse and extension of
classes, inheritance and polymorphism; overloading and overriding; static and dynamic binding; multithreaded
programming; event handling and exception handling; process of object oriented requirements specification,
analysis and design; notations for object-oriented analysis and design; case studies and applications using some
object oriented programming languages. Object Oriented Design Patterns: Behavioral, Structural and Creational.

BCS ZC317 Relational Databases (4 units)


Introduction to Database Management Systems; File organization; Data Independence in databases; Data Modeling;
Data Definition and Manipulation; Relational Data Model; Relational Algebra & Relational Calculus; Structured Query
Languages; Database Design techniques; Functional Dependencies & Normalization; Query processing and
optimization; Indexing techniques; Transaction management - concurrency control and recovery; Distributed
Databases; Concepts of security and integrity in databases.

BCS ZC234 Programming for Mobile Devices (3 units)


Introduction to mobile computing and emerging mobile application and hardware platforms; Developing and
accessing mobile applications; Software lifecycle for mobile application – design and architecture, development –
tools, techniques, frameworks, deployment; Human factors and emerging human-computer interfaces (tangible,
immersive, attentive, gesture, zero-input); Select application domains such as pervasive health care, m-Health;
Mobile web browsing, gaming and social networking; Trends in mobile application development.

BCS ZC238 Web Programming (3 units)


Technologies related to web development and associated technologies that make the web work. Scripting
languages like HTML, CSS and JavaScript; Design of dynamic websites; on both client-side and server-side scripting
technologies; full-stack web development. Design and development of web applications, web applications that
could query database and fetch information over the network; development and testing of web applications.

BCS ZC232 Operating Systems (3 units)


Introduction to operating systems; Various approaches to design of operating systems ; Overview of hardware
support for 0perating systems; Process/thread management: synchronization and mutual exclusion, inter process
communication, CPU scheduling approaches; Memory management: paging, segmentation, virtual memory, page
replacement algorithms ; File systems: design and implementation of file systems; Input /Output systems; device
controllers and device drivers; Security and protection; Case studies on design and implementation of operating
system modules.
BCS ZC236 Software Design Principles (4 units)
Software Development lifecycle; Role of high level and low level design in lifecycle. Object-Oriented Abstraction and
Object Oriented Design. Design for Reuse and Design for Change – Refactoring. Design Patterns - History of Patterns
in Building Architecture and Relevance to Software Design, Evolution of Software Design Patterns and Impact of
Using Design Patterns in Lifecycle. Crosscutting Concerns and Aspects – Aspect Oriented Design. High-level design
vs. Low-level design. Basic Architectural Elements and Styles – Layered Architectures and Event-Driven
Architectures, MVC architecture in User Interfaces.

BCS ZC214 Building Database applications (3 units)


This course discusses end-to-end application programming involving databases using SQL, PL/SQL, front-end
framework, and exposing back-end through APIs. Debugging, Testing, Monitoring, Documenting and Maintaining
database applications are discussed. Particular focus will be on Database connectivity; stored procedures; data
ingestion/loading; ingestion latency and query performance. This course culminates with a project that involves
programming, implementing, and demonstrating a database solution for a business or organization

BCS ZC211 Software Development Practices (3 units)


Review of Use Cases. Design using use cases and data flow; Development Tools and Technologies - IDEs (Eclipse);
Compilers and Compiler Options, Libraries and APIs; Code Reviews and walkthroughs; Debugging and Unit Testing,
Runtime conditions and Assertions; Runtime Environments (JVM, Android) Code Repositories (GitHub); Versioning;
CI/CD.

BCS ZC231 Network Programming and Client Server Programming (3 units)


Overview of computer networks; inter-process communication; network programming; socket interface;
client-server computing model: design issues, concurrency in server and clients; external data representation;
remote procedure calls; network file systems; distributed systems design.

BCS ZC222 Formal Languages and Applications (3 units)


Regular Expressions, Typical languages expressible using Regular expressions - Regular Languages, Closure
Properties; Tokens or Lexemes of Languages (Formal or Natural) – Token descriptions, Scanning Sentences or
Programs, Scanner - Design and Implementation. Applications: Specifying patterns, Test cases; Context Free
Grammars and Rules, Context Free Languages; Defining the syntax of formal and natural languages; Closure
Properties; Limitations of CFGS – features not expressible via CFGs; Context-sensitive Grammars and Languages;
Parsing sentences or programs. LL Parsing vs LR Parsing; Look heads - LL(1) parsing, LL(1) parsing engine, and
construction of LL(1) parsing table; LL(k) parsing examples and counterexamples, Issues – Ambiguity in CFGs and
CFLs. Resolving Ambiguity –
Left Factoring and Left Recursion. LR(1) parsing; Application – Natural Language Parsing and POS Tagging;

BCS ZC224 Graphs and Networks (3 units)


Basic concepts of graphs and digraphs, Modelling problems from application domains as graph problem,
connectedness, reachability, Euler Tours, Hamiltonian Cycles, planarity, Applications; real world networks: measures
(centrality, transitivity, reciprocity), properties and models (random networks, small world model, preferential
attachment model), communities in social networks

BCS ZC213 Automata and Computability (3 units)


Finite Automata – DFA, Equivalence of DFAs to regular expressions; PDA – DFA with a stack, equivalence of PDAs to
CFLs; Turing Machines – Comparative power of DFAs, PDAs, and TMs. Universal TM; Brief Overview of Chomsky’s
hierarchy and Church-Turing hypothesis; Non-computable functions; Informal equivalence between TMs and
General Purpose computers.
Pre-requisite: BCS ZC222 Formal Languages and Applications
BCS ZC221 Experimental Algorithmics (3 units: 2+1)
Review of time complexity, order of complexity, and Big-O notation; Comparing Theoretical analysis of time and
space complexity of elementary algorithms (Sorting, Binary Search trees, Hash tables) with experimental
running-time and space measurements. Experiments on key distribution: Measuring heights of BSTs for different
datasets and order of arrivals, Uniformity of buckets/bins in hashtables with different hash functions; Size
Experiments: Growth of hash table size with datasets and query sequences, Bloom filter size vs. false positive rates,
Sketches and cardinality estimation via HyperLogLog. IO Complexity and disk access measurements: Sorting, BSTs
vs. B-Trees, Sparse Graphs vs. Dense Graphs. Caching in Data Structures. Case Studies: Use of B-Tree variants in
datasets, Bloom filters in Distributed file systems, and HyperLogLog in Redis.
Pre-requisites:
● BCS ZC311 Data Structures and Algorithms
● BCS ZC212 Algorithm Design

BCS ZC227 Introduction to Bioinformatics (3 units)


Course description to be released soon

BCS ZC217 Data Visualization (3 units)


Information overload and issues in decision making. Design of visual encoding schemes to improve comprehension
of data and their use in decision making; presentation and visualization of data for effective communication.
Elementary graphics programming, charts, graphs, animations, user interactivity, hierarchical layouts, and
techniques for visualization of high dimensional data & discovered patterns.

BCS ZC312 Introduction to Data Analytics (4 units)


Introduction to data analytics, applications, Python fundamentals (variables, strings, simple math, conditional logic,
for loops, lists, tuples, dictionaries, etc.); Preparing the data - download the data in python, visualizing using
matplotlib, seaborn to gain insights, data cleaning, transformation; Regression - applications, fitting models,
gradient descent, evaluation, regularized models); Classification - applications, fitting models ( decision tree, logistic
regression), addressing overfitting, performance, Model selection techniques; Clustering - applications, k-means and
hierarchical clustering, quality of clustering; Discussion on advanced topics; Ethical implications of handling data
and building models.
Pre-requisites:
● BCS ZC230 Linear Algebra and Optimization
● BCS ZC233 Probability and Statistics
● BCS ZC313 Introduction to Programming

BCS ZC315 Multi-Core Programming and GPGPU Programming (3 units)


Multi-threaded Programming. Review of multicore processors and caching. Shared Memory Programming in the
multi-core context. – Use of Locks for Synchronization. Shared Memory data structures - Synchronization issues and
models, Lazy synchronization, Design of shared memory data structures. Review of GPGPU architecture and GPGPU
programming model. Programming with many-core processors and NUMA. CUDA Programming.
Pre-requisite: BCS ZC216 Computer Systems and Performance

BCS ZC237 TCP/IP and the Internet (3 units)


Review of the OSI model and the Internet model; A top-down approach. Application Layer – HTTP, HTTPS/TLS, DNS,
and Multi-media transport; The Internet – Transport, TCP vs. UDP, Routing, and Gateways. IP – Addressing and
Routing.
Pre-requisite: BCS ZC231 Network Programming and Client Server Programming
BCS ZC226 Information Security (3 units)
Program security, Web security, Database security, Protection in operating systems, Cloud security fundamentals;
Privacy and Anonymity in computing; Legal and ethical issues in security, Secure programming and Trusted systems
design; policy, administration and procedures; auditing; physical security; content protection.

BCS ZC225 Human Computer Interaction (3 units)


Principles of human-computer interaction; Evaluation of user interfaces; Usability engineering; Task analysis,
user-centred design, and prototyping; Conceptual models and metaphors; Software design rationale; Design of
windows, menus, and commands. Voice and natural language I/O; Response time and feedback; Color, icons, and
sound; Internationalization and localization; User interface architectures and APIs.

BCS ZC218 Designing Multimodal Interfaces (3 units)


UI Design Principles; GUI Design; Interfaces with multiple modes of interaction – text, graphics, and speech;
Identification and authentication: CAPTCHAs; Smart Cards; Design of multi-factor authentication schemes;
Identification in Personal Devices – fingerprints, voice-print identification; Design of interfaces for Smart Personal
Assistants; Case Study: Siri/Cortana, Alexa/Google Device. Design of chatbots with emphasis on the design of Natural
language interaction/conversations.
Pre-requisite: BCS ZC316 Object Oriented Programming

BCS ZC314 Modern Databases (4 units)


Different types of content - Structured vs. Unstructured vs. Semi-structured data, notion of Atomicity (or
Consistency) ACID vs. BASE; Strong vs. Weak Consistency model; Serializability; Eventual Consistency; CAP Theorem
and Implications; Solution models and Design Examples (some of MongoDB, REDIS, Cassandra, Neo4j); Document
stores, Key-Value Stores, Column stores, Graph stores and languages for their query processing, In-memory
databases, and cloud databases (E.g, Amazon RDS); Exposure to application development.
Pre-requisite: BCS ZC214 Building Database Applications

BCS ZC229 Introduction to Economics (3 units)


Big ideas in economics; Functioning of the economy; Scarcity and choice; Consumer behaviour; Firm behaviour;
Competitive markets; Labour markets; Unemployment; Capital market; Banking and the non-banking financial
institution; Central banking; Economic growth; Inflation; Monetary policy; Fiscal Policy.

BCS ZC241T Study Project (5 units)


In this course, students are expected to carry out an organized study and identify a problem which requires a
software solution. Students also study the impacts of solving the problem and the existing solutions. At the end of
the course, students submit a report with the project proposal, details on background, scope and solution
methodology (including requirement specifications).

BCS ZC242T Project (5 units)


The students registered in this course will identify a problem which requires software-based solutions. The students
will identify the details of the requirements, design the solution to the problem and implement it using any of the
tools/techniques covered as a part of the program. The students will
demonstrate their work and submit the detailed project report at the end of the semester.

BCS ZC428T Project (10 units)


In this course, the students work to produce a software solution to a problem whose requirements were studied and
documented in the Study Project course. The students will demonstrate their work and submit the detailed project
report at the end of the semester.

You might also like