Your browser does not support JavaScript

Computer Science and Entrepreneurship Programme
Computer Science and Entrepreneurship Programme

Engineers and scientists around the world launch high-tech companies to move their ideas to the market. Studies show that the majority of innovative products and services in an economy evolve from entrepreneurial ventures. By providing knowledge and skills important to the creation and leadership of such startups, the Entrepreneurship Concentration within the Computer Science Program at Ashoka University will aim to train the founders and leaders of tomorrow’s high-tech ventures. The program is designed specifically for students who want to be tech-entrepreneurs. Courses are approached from the perspective of the student whose primary interest is in technological innovation, whose primary concentration is on science courses, and who has little or no prior business education.

Courses and Descriptions

Introduction to Computer Programming

Introduction to Computer Programming is the first course in our series introducing students to computer science. In this class you will learn the fundamentals of computer programming in Java, with emphasis on applications in science and engineering. You will also learn about the broader field of computer science and algorithmic thinking, the fundamental approach that computer scientists take to solving problems.


Probability, Data Science and Statistica

This course tightly integrates the theory and applications of discrete probability, discrete stochastic processes, and discrete statistical inference in the study of computer science. The course will introduce the Minimum Description Length Paradigm to unite basic ideas about randomness, inference and computation. Students will be expected to use the Maple programming environment in homework exercises which will include numerical and symbolic computations, simulations, and graphical displays.


Computer Architecture

This course focuses on advanced topics in modern computer architecture, illustrated by recent case studies. Topics include fundamentals of quantitative analysis; pipelined, out-of-order, and speculative execution; superscalar, VLIW and vector processors; embedded processors; memory hierarchy design; thread-level parallelism; multiprocessors and multi-core architectures, synchronization and cache coherence protocols.


Numerical Methods for Computer Science

This course introduces some of the formal tools of computer science, using a variety of applications as a vehicle. You’ll learn how to encode data so that when you scratch the back of a DVD, it still plays just fine; how to distribute “shares” of your floor’s PIN so that any five of you can withdraw money from the floor bank account (but no four of you can); how to play chess; and more. Topics that we’ll explore along the way include: logic and proofs, number theory, elementary complexity theory and recurrence relations, basic probability, counting techniques, and graphs.


Operating Systems

Design and implementation of operating systems. Topics include process synchronization and interprocess communication, processor scheduling, memory management, virtual memory, interrupt handling, device management, I/O, and file systems. Hands-on study of Linux operating system design and kernel internals, including work with Android devices. Experience with commercial virtualization tools and open source software.


Theoretical Computer Science

This course is an introduction to models of computation, computability, and complexity. We will ask questions like: How do we define the abstract notion of “computation” or a “computer”? What problems can be computed? What problems can be computed efficiently? Can we prove that some problems can never be computed, no matter how fast our computers become? The course is highly mathematical and abstract; in particular, there will be minimal programming assignments (if any) and homework problems will frequently involve proving or disproving various assertions. Students are expected to be comfortable with the material covered in Discrete Math or the equivalent.

Topics (not exhaustive): automata and the languages they define, context-free grammars and the languages they define, Turing machines, basic complexity theory (such as P vs. NP).


Advanced Programming and Data Structures

Complete data structures and algorithms course. The course teaches the following topics : Objects and ADTs, Constructors and destructors, Data Structure , Methods, Pre- and post-conditions C conventions, Error Handling, Arrays, Lists, Stacks, Stack Frames, Recursion, Sequential Searches, Binary Search , Trees, Complexity, Queues, Priority Queues , Heaps, Bubble , Heap Sort, Quick Sort , Bin Sort, Radix Sort, Searching Revisited, Red-Black trees, AVL trees, General n-ary trees, Hash Tables, Dynamic Algorithms, Fibonacci Numbers , Binomial Coefficients, Optimal Binary Search Trees, Matrix Chain Multiplication, Longest Common Subsequence, Optimal Triangulation , Graphs , Minimum Spanning Tree , Dijkstra’s Algorithm , Huffman Encoding , FFT , Hard or Intractable Problems, Eulerian or Hamiltonian Paths , Travelling Salesman’s Problem.


Algorithm Design and Analysis

How do you optimally encode a text ?le? How do you ?nd shortest paths in a map? How do you desgin a communication network? How do you route data in a network? What are the limits of ef?cient computation? This course gives a comprehensive introduction to design and analysis of algorithms, and answers along the way to these and many other interesting computational questions. You will learn about problem-solving; advanced data structures such as universal hashing and red-black trees; advanced design and analysis techniques such as dynamic programming and amortized analysis; graph algorithms such as minimum spanning trees and network ?os; NP-completeness theory; and approximation algorithms.


Programming Language Design

What makes a programming language like “Python” or like “Java?” This course will look past superficial properties (like indentation) and into the soul of programming languages. We will explore a variety of topics in programming language construction and design: syntax and semantics, mechanisms for parameter passing, typing, scoping, and control structures. Students will expand their programming experience to include other programming paradigms, including functional languages like Scheme and ML.


Data Mining and Information Retrieval 

How does Google always understand what it is you’re looking for? How does figure out what items you might be interested in buying? How can categories of similar politicians be identified, based on their voting patterns? These questions can be answered via data mining, a field of study at the crossroads of artificial intelligence, database systems, and statistics. Data mining concerns itself with the goal of getting a computer to learn or discover patterns, especially those found within large datasets. We’ll focus on techniques such as classification, clustering, association rules, web mining, collaborative filtering, and others.


Entrepreneurship and Business Planning

This course focuses on investigating, understanding, and implementing the process of founding a start-up firm. Elements of searching out new venture opportunities, matching skills with a new venture, financing, competitive strategy, intellectual property, and operating a new venture will be explored. The focus of the course will be the development and presentation of a business plan created by teams of students with various academic backgrounds.


Entrepreneurial Leadership

This course is designed to help students develop their knowledge, confidence, skills, and self-image necessary to pursue entrepreneurial ventures in such domains as business, government, and public service. It provides a foundation in the fundamentals of entrepreneurial leadership, as well as a source of inspiration and energy in the art and science of taking visions and bringing them to reality.


Innovation in Practice

Entrepreneurship is innovation in practice: transforming ideas into opportunities, and, through a deliberate process, opportunities into commercial realities. These entrepreneurial activities can take place in two contexts: the creation of new organizations; and within existing organizations. This course will present an entrepreneurial framework for these entrepreneurial processes, supported by case studies that illustrate essential elements. Successful entrepreneurs and expert practitioners will be introduced who will highlight practical approaches to entrepreneurial success.


Entrepreneurial Marketing

This course focuses on institutional and product marketing methods used by start-up to medium-sized companies. After an overview of basic marketing principles, the course will cover the spectrum from day-to-day marketing activities of the entrepreneurial business to positioning and strategy. Students will learn to analyze, formulate, and implement marketing strategy, and learn the fundamentals of market research, pricing, and reaching and selling to customers.


Entrepreneurial Finance

This course focuses on understanding how to construct the data and find appropriate financing for a start-up venture. Various forms of financing are introduced: vendor financing, factoring, etc. Through a medley of tests, case studies, and team exercises, students exercise basic financial skills such as financial statement formulation, NPV analysis and scenario analysis.


High Technology Entrepreneurship

This course focuses on the key components of starting a venture-scalable high-tech business. The course will examine the full life cycle of a startup; from opportunity assessment and market sizing to R&D and operation plans and go-to-market and distribution strategy. The course will also cover venture capital, legal considerations and team building. The role of angel investors, venture capitalists, and non-dilutive funding will be covered in depth. Student teams will write and present a business plan to active venture capitalists.

Major Requirement

The curriculum structure for the Bachelor’s Degree programme in Computer Science & Entrepreneurship follows that of the University’s standard undergraduate programme curriculum structure.

To earn a Bachelor’s degree, each student will be required to complete a total of 28 courses over the programme period of 3 years of 2 semesters each. The programme will require 16 courses in the major papers/subjects. Foundational papers/subjects will constitute the remaining coursework for the student, adding up to 12 courses

Sample Curriculum Structure


Please note that Major Courses are marked in Red.


Semester I Semester II Semester III Semester IV Semester V Semester VI
Intro to Critical Thinking Critical Thinking Seminar I : Discrete Mathematics Critical Thinking Seminar II: Mathematical Logic and Specification Literature and the World Principles of Science Theory of computation
Great Books Trends in History Mind and Behaviour Numerical Methods for Computer Science Computer Security and Privacy Operating Systems
Indian Civilizations Foundations of Economic Reasoning Social and Political Formations Probability, Statistics and Data Science Algorithm Design and Analysis Social Entrepreneurship and Impact
Introduction to Mathematical Reasoning Introduction to Computer Programming Human – Computer Interaction High Technology Entrepreneurship Creativity and Design Thinking Innovation in Practice
    Networked and Social Systems Data Mining and Information Retrieval New Venture Planning  Entrepreneurial Marketing and Finance