* Interdisciplinary majors. Not offered as minors. Only offered as majors. No minor combination possible.
Technology, more specifically, computers are an integral part of our lives and are here to stay. This has been fuelled by exponential growth in technological development and innovation which is unmatched in history. There is no aspect of modern life which is untouched by computers. From medical procedures to stocking the fridge, computers are ubiquitous in their presence. The interaction between humans and computers is being recognised as one of the most important areas of technological development. Newer computational methods such as artificial intelligence and machine learning have made rapid inroads in mapping and predicting human behaviour and physical systems. Computer Science today is not only about programming but requires cross-disciplinary tools to make systems and processes more efficient. This requires that the new generation of computer scientists are trained not only in the core areas of computer science but also have practical knowledge of the disciplines that informs it and the areas that it influences.
Design is one such discipline and helps to make the human computer interaction intuitive, welcoming, and easy to use. Design principles and methods are becoming increasingly relevant for programmers. The specialisation in Computer Science and Design is situated within the broad context of liberal education and at the intersection of computation and design. It adopts an inter-disciplinary approach to provide a strong foundation in theoretical and practical aspects of computer science and design approaches including the use of new media technologies. The major intends to train students who not only take up computing challenges that arise in areas such as business, industry, entertainment, but also in the arts and sciences. It also prepares the student to work in digital media industries such as gaming, animation, virtual or augmented reality.
The computer science and design curriculum is composed of four broad requirements that includes the core, breadth, depth, and a project. While the core lays a strong foundation, the breadth shall survey the areas in which computing plays a role. The depth shall include specialised courses in data mining, artificial intelligence, computer security, Cloud infrastructure, database technologies, Game design, Immersive design, Interaction design in addition to other applications. The specialisation culminates in the graduation project which provides a platform for applying the learnings in computer science and design to solve a problem of practical interest.
SPECIALIZATION AIMS
- Equip students with a strong technical foundation to creatively apply computational technologies to solve problems of practical interest.
- Expose students to a wide range of problems from diverse areas and the computational methods employed to solve them.
- Inculcate basic skills in design thinking and problem solving
- Prepare professionals who are well versed in computational technologies and understand the nuances of user experience
- Provide skills to succeed and advance in professional careers related to computing or software.
- Provide the basis for advanced studies in the field.
- Develop communication and soft skills to function effectively in their profession.
- Inculcate the habit of life-long learning and development to keep pace with the advances made in the field.
MAJOR OUTCOMES
After successful completion of the Major, the student will be able to,
- Apply mathematical and computer science concepts for design and analysis of algorithms, interpreting data and computing solutions
- Apply diverse programming paradigms such as procedural, object oriented, procedural, in a variety of contexts
- Use and apply system design principles to design, plan and implement software projects
- Demonstrate practical knowledge of the latest computing technologies and frameworks
- Demonstrate understanding of design language and its elements and principles
- Identify, define, ideate, and solve user’s problems with the knowledge of design thinking methods and interdisciplinary knowledge
- Understand the importance of computational methods and Information Technology in various fields and create effective solutions to address issues and solve problems
- Demonstrate systematic methods of conducting user studies and research to identify user needs and problems
- Demonstrate design skills and knowledge acquired and applied through a design portfolio
COURSES (CORE AND ELECTIVE)
MAJOR COURSES
Introduction to Programming | Fundamentals of Computer Architecture | Designing Conversations UI/UX |
Introduction to Programming for Beginners | Systems Programming | Introduction to Interaction Design- UI/UX |
Introduction to Discrete Mathematics | Introduction to Theory of Computation | Software Architecture and Engineering * |
Elements and Principles of Design | Typography and Calligraphy | Advanced Machine Learning * |
Design explorations with Lines and Shades | Basic Graphic Design | Fundamentals of Distributed Systems * |
Introduction to Internet of Things | Principles of Machine Learning | Digital Humans * |
Introduction to Computational Modelling | Principles of Operating Systems | Introduction to Game Design * |
Computer Organization | Computer Networks | Fundamentals of Computer Security * |
Fundamentals of Data Structures and Algorithms | Applied Formal Methods | Cloud Infrastructure and Devops * |
Mathematics for Computer Science | Introduction to Information Design and Visualization | Compilers and Languages * |
Linear Algebra | Design Thinking and Design Process | New Media Immersive Design * |
Design Drawing and Visualization | Fundamentals of Computer Graphics | Computer Simulations * |
Colours and Creative Composition | Fundamentals of Database Systems | |
Design and Analysis of Algorithms | Web Systems Principles |
* 4th year undergraduate courses
Introduction to Programming
This course introduces students to programming and computational thinking. It shows that the thinking behind programming is an extension of school algebra. Just as the purpose of algebra is to simplify reasoning about relationships in real world situations in terms of numerical relationships, programmers learn to express the essence of real world information and actions in the precise language of computers. Once describe properly, a computer can execute them with fidelity. This course shows how ideas such as algebraic variables and operations can be extended with conditionals, recursions, and equational reasoning to express computations.
Introduction to Computational Modeling
This course shows how computers can be used to model phenomena in the world using elementary computational approaches such difference equations. Induction serves as the reasoning principle to plan and understand such programs. This course also introduces gradient descent and elementary neural networks as a model of natural phenomena.
Introduction to Discrete Mathematics
This course aims to cover the basics of discrete mathematics. Discrete mathematics is the study of discrete mathematical structures which do not rely on the notion of continuity. It introduces fundamental mathematical structures and various proof techniques and methods for solving different kinds of problems. This course prepares the student to do advanced courses in applied mathematics and computer science.
Introduction to the Internet of Things
This course teaches the basic ideas of protocols and computer communication using Arduino and other kits to build “things that do what you want”. Students should be able to write basic programs that control artifacts such as temperature sensors and take action such as moving a car under the shade in response. This course builds on Students familiarity with programming and computational modelling.
Elements and Principles of Design
Students are introduced to the elements and principles of design, encouraged to observe them and try and explain/interpret their direct and indirect interpretations. Gestalt’s principles are also introduced. Based on their interpretations, try and recall how are these used in various forms of design whether product, fashion, architecture or graphic. Further, observe the significance of the elements and principles in various cultures. Readings are from diverse disciplines like Psychology and Marketing with Design to understand the linkages of Design with various disciplines. The course has simple assignments on an exploration and interpretation level.
Design explorations with Lines and Shades
Knowledge and skill of sketching and drawing is the foundation to any design discipline. This course offers training in sketching as one of the means of visual representation. The focus is on structured and decorative lines enabling developing a keen sense of observation, interpretation and representation using various tools, techniques and mediums. The course also helps in experiencing space in terms of perspective; sharpens the ability to analyze and appreciate the visible or hidden structure of things. Readings are from diverse disciplines like Psychology and Marketing with Design to understand the linkages of Design with various disciplines.
Computer Organization
This course studies the basic instruction set architecture and organization of a modern computer. It adopts a programmer’s perspective of computer systems to execute programs, store information, and communicate. During the course the student is exposed to the fundamentals of translating higher level languages into assembly language, and the interpretation of machine languages by hardware. While concurrently, the role of the fundamental constituents of a computer, the gate, to build the final computing device is emphasized.
Fundamentals of Algorithms and Data Structures
This course builds on the programming skills acquired in Introduction to Programming. It introduces program design, analysis, and verification in relation to the study of data structures. Data structures are common constructs to store and manipulate data, and they are important in the construction of sophisticated computer programs. Students are introduced to some of the most important and frequently used data structures and their algorithms: lists, stacks, queues, trees, hash tables and files. This course is programming intensive where students are expected to write a variety of programs ranging from simple to build more elaborate structures. The emphasis of programming component will be to write clear, modular programs that are easy to read, debug, verify, analyze, and modify.
Mathematics for Computer Science
This course builds on elementary discrete mathematics and goes into the details of logic, proofs, graph theory, difference equations (recurrences), elementary abstract algebra and other topics necessary for the analysis of algorithms and the appreciation of formal systems.
Design Drawing and Visualization
Design Drawing helps in conceptualizing, visualizing and communicating design ideas. Students would explore themes from nature and man-made environment and represent them creatively. The course has a framework of iconic, symbolic and metaphorical representations. Students then would be able to translate the intended ideas for communicating visually.
Colors and Creative Compositions
This course introduces concepts of Color, Visual Composition, use of Typefaces and Layout. Color is considered to be the soul of design. A good design pulsates with life if done well with colors. They help in generating emotions and ideas, express messages, keep the viewer engaged and have a lasting impact. Composition and layout will focus on arranging visual elements in a systematic and coherent way to achieve desired visual impact and to communicate. Students will also be introduced to the concept presenting information and graphical elements in a structured way using grid. Knowledge and skill of typefaces are essential to endow a durable visual form to any visual communication.
Fundamentals of Computer Architecture
This course studies the details of instruction set architecture and organization of a modern computer. Principles such as the structure of pipelines, cache design, out of order instructions, are studied. Basics of multi core systems and cache sharing protocols are also studied. The need for lower power in cpus due to the rise of mobile computing is considered.
Systems Programming
This course looks at details of how operating systems and applications interact. We study compilers, linkers, loaders, how system calls are organized, low level memory management. This course also looks at low level data structure implementations in machine level languages like C. We study the storage of data on file systems including storage structures used in database systems.
Theory of Computation
This course introduces TCS as the study of mathematical models of computation, languages and logic. It introduces the student to the models of computation including finite automata, regular languages, context-free grammars, and Turing machines. These models provide a mathematical basis for the study of computability theory—the examination of what problems can be solved and what problems cannot be solved—and the study of complexity theory—the examination of how efficiently problems can be solved, including the P versus NP problem.
Design and Analysis of Algorithms
This course explores the methods for the design of efficient and reliable algorithms. It introduces common techniques to decrease computational resources to find solutions to problems. It will also introduce the mathematical framework for evaluating the correctness, running time and space requirements of algorithms. It will review common data structures and their applications and introduce a range of approaches and established algorithms for solving common classes of problems. It will cover common programming paradigms like Divide and Conquer, Greedy algorithms, and Dynamic Programming.
Typography and Calligraphy
This course focuses on thinking with Typography and creating Calligraphic expressions. The typography component is divided into three sections: the Letter, the Text and the Grid. The practical aspect of the course introduces students to three calligraphic tools. The theoretical framework broadly describes the characteristics of extinct Egyptian hieroglyphs, the Indian script Devanagari and the origin of Roman alphabets. Readings are from diverse disciplines like Sociology, Psychology and Marketing with Design to understand the linkages of typography and calligraphy with various disciplines.
Basic Graphic Design
The course introduces students with basic orientation of the field of graphic design. Students will learn the skills and fundamentals of designing logos, symbols, stationary design/ brand identity, and a single page layout through graphical and allied media.
Principles of Machine Learning
This course explores the design, implementation, and analysis of machine learning algorithms. This course will introduce supervised learning algorithms such as decision tree learning, support vector machines, and neural networks, unsupervised learning algorithms including k-means and expectation maximization, and reinforcement learning algorithms. It will also introduce methods for the evaluation of learning algorithms, as well as topics in computational learning theory.
Principles of Operating Systems
This course explores the design and implementation of computer operating systems. Topics include historical aspects of operating systems development, systems programming, process scheduling, synchronization of concurrent processes, virtual machines, memory management and virtual memory, I/O and file systems, system security, Operating system and architecture interaction.
Computer Networks
This course explores the design and implementation of Network systems and protocols. The course covers the structure of the internet and the history of its evolution. Principal programming techniques of networked software will be studied, and issues in Concurrent and Distributed programming will be introduced in this course
Applied Formal Methods
This course explores principles and practices of modern formal methods tools such as SAT Solvers, Model Checkers, Provers, and Type checkers. Examples include TLA, Alloy, Lean, and the Rust borrow checker. We study the basic ideas and applications of these tools.
Introduction to Information Design
This course will give students exposure to the history of visualization practices across disciplines and in relation to technology developments. This course will explore the theories and practices of information design through studio projects. Students will be required to research visual systems and information structures such as maps, timelines, charts, and diagrams. Students will understand the creative process of organizing, visualizing, and communicating data by seeking to make complex information easier to understand and use. The course will include a mini project as an end term component.
Design thinking and processes
The course equips students with the necessary methodologies and processes to the identification and analysis of different issues and concerns related to design and to the initiation, expression, and communication of concepts.
Introduction to Interaction Design
Interaction Design course aims to expose students to influence of everyday behavior of products, services, environments, and systems. This course structure will involve teams of students working together on the research, planning, concept ideation, iterative refinement, prototyping, evaluation, and communication of novel solutions. These design solutions will strive to enhance the quality of people’s lives while acknowledging that the environment is the greater context for all design. The course will include a mini project as an end term component.
Fundamentals of Computer Graphics
Special effects are ubiquitous in today’s world where images are manipulated and also programmatically created. This course introduces the fundamental methods behind the tools used to manipulate and create images. Beginning with the models of interaction of light/electromagnetic radiation with sensors, and it moves on to study the data structures and processor architectures that allow us to efficiently evaluate that physical model. Topics covered in the course include: projective geometry, ray tracing, bidirectional surface scattering functions, binary space partition trees, matting and compositing, shadow maps, cache management, and parallel processing on GPUs. It is a hands-on course which requires programming using open graphics libraries for the image creation and rendering.
Fundamentals of Database Systems
This course presents the fundamental concepts of database design and use. It provides a study of data models, data description languages, and query facilities including relational algebra and SQL, data normalization, transactions and their properties, physical data organization and indexing, security issues and object databases, basics of concurrency and crash resistance. Elements of CAP theorem and Big Data databases.
Web System Principles
This course introduces the core elements of web and mobile application infrastructure, such as the HTTP protocol, HTML and CSS, and Javascript. We also learn about the issues in creating an always on program, with some elements of Continuous Integration, Deployment and Web Service management.
Software Architecture and Engineering
Modern software systems are complex and building a reliable, efficient system is not an easy task. Given the scale of coding involved, it is extremely important to follow a principles-based approach to software design, implementation, and testing. This course explores those methods. Specific topics include: software processes; specifying requirements and verifying correctness; software architectures; concurrent, parallel, and scalable systems design; testing and debugging; and performance evaluation.
Fundamentals of Distributed Systems
This course studies the key design principles of distributed systems. Topics include communication protocols, naming, synchronization, consistency and replication, fault tolerance, and security. Students also examine some specific real-world distributed systems case studies, including Google and Amazon. Students will understand how large-scale systems are built, and to provide students with the tools necessary to evaluate new technologies after the course ends.
Advanced Machine Learning
This course covers introductory aspects of text mining techniques and methods used for image and video processing. Some of the tools we learn are deep learning techniques, including Convolutional networks, RNNs, LSTM and other topics. We also discuss elements of time series, recommendation systems and similar topics. You will also learn how to use modern tools like TensorFlow.
Cloud Infrastructure and DevOps
This course studies systems issues in deploying and managing cloud infrastructure and system maintenance, including issues in upgrading systems without degrading user service, managing the evolution of versions, managing software development on local machines and cloud etc.
Fundamentals of Computer Security
Security is now a core requirement when creating systems and software. This course will introduce students to the fundamentals of computer security and elements of applied cryptography. Topics include software vulnerability analysis, defense, and exploitation, reverse engineering, networking and website security and security standards and policies. Students will also learn the fundamental methodology for how to design and analyze system security.
Compilers and Languages
This course explores principles of various programming languages and their implementation techniques. This includes classical compilers as well as implementations of functional languages, typecheckers, logic programming and other paradigms.
Computer Simulations
This course studies the use of computers for simulations using Agent Based Models and the Science of Networks to understand a variety of phenomena in Economics, Biology, Physics and various situations where scale and complexity play a role.
Digital Humans
This is an advanced course focusing on meaningful persuasive interactions on the web or social media. The students will learn how to understand users, their intentions, motivations and relevant usability concerns for providing meaningful responses. The course may touch upon the strategies based upon the undated IT paradigm. It's a synthesis of several design disciplines, including voice user interface design, interaction design, visual design, motion design, audio design, and UX Design.
New Media Immersive Design
New Media is a digital convergence of all the existing and possible media. Leveraging upon the advanced technological tools it is possible to create an immersive experience for the users. The students will understand and learn how to develop such an experience for the users.