Sunday, July 17, 2011

CS 207 - Discrete Structures

The first real mathematical course in the department, Discrete Structures forms the basis for all of the theory that follows. The course requires a good amount of effort from the student and a clear understanding and good amount of practice is the way to do well in the course. One major problem that is faced by students in the course is that it is the first time we are thrust into this scenarios of rather difficult proofs using various proof techniques and some relatively new kind of notations. It can be helpful to read up very properly the first chapter on Logic in the book very well, as this would get you comfortable with the notations and proving techniques.

As far as the course contents are concerned the initial half of the course deals with sets and relations,cardinality,finite and infinite sets and many theorems on Posets and Lattices. The next half of the course tries to give an introduction to Graph Theory and Group Theory. Topics in the second half of the semester will move at quicker pace than first half.

These fundamentals form the basis for almost all of the theory that ensues, hence this course is useful both as an introduction as well as a foundation. If you find yourself facing problems, the only clear way out is through solving more problems and writing them out properly, as decent focus is laid on proof expression skills also.
Attending classes is really a must in the course.

References are :

1) Kenneth Rosen, Discrete Mathematics and its applications, 5th edition, Tata-McGraw Hill, 2002. ( doesn't cover Graph Theory)

2) Kleinberg-Tardos , Algorithm Design (only for Graph Theory)

(Post Credits - Varun Reddy, Naman Agarwal)

Computer Architecture (CS 305)

Computer architecture is a course that is kind of an extension of the logic design course. While in logic design you learned about how hardware works, this course will teach you about how this hardware is brought together to create a computer. The course deals with various low level (close to hardware) things about computers.
This course is high on new information, and the questions in the exams do not deeply differ, at least on a conceptual level, from what you will do in classes. In general, attending the classes is recommended, as the instructor ensures an adequate amount of practice in class itself, which saves effort at home.

The Lab -

The corresponding lab has a large variety of assignments to offer. The initial labs would expose you to programming in Assembly language. The later labs would be at more conceptual level; although not much effort is needed to do the programming part of these assignments, you need to put more effort in understanding and reason out the outcome of the experiments that you do. The assignments are to be done during the lab hours only and they are pretty easy to complete provided you have a decent understanding of the theory covered in the lectures.

(Post Credits - Ravi Bhoraskar, Pritish Kamath)

Friday, July 15, 2011

Database and Information Systems (CS 317)

Database and Information Systems is a course dealing with Databases and how to create,manage and optimise them.It kicks off with a pretty detailed description of SQL(a languange used to use databases), which forms the easier portion of the syllabus and it is recommended that one understands this nicely and gets some healthy marks in the initial set of quizzes. The course then moves onto a detailed description of how databases are constructed and handled. This part does get a bit involved and it is generally observed that students tend to lag behind as this also marks the latter part of the sem in general. However attending classes regularly helps and keeping up the enthu for the course makes the course one where you can secure a decent grade.

Material for the course consists a pretty helpful set of slides compiled and used by the professor. The prescribed book thought not a must still helps as it is by the professor and he follows it quite strictly.

The Lab -

The corresponding lab is relatively easier (as compared to OS lab). The deadlines are fairly relaxed so you can finish your assignments nicely and on time. Also, there are fewer assignments, which finish within weeks after the midsem. A major part of the lab depends on the DBIS project. The project would mainly involve designing and implementing a web-based application. A lot of freedom is given on deciding the project; hence it can be very interesting and enjoyable.

(Post Credits - Naman Agarwal,Pritish Kamath)

Operating Systems (CS 347)

Operating systems

The first real course on systems, CS 347 is a course that introduces several new and fundamental concepts regarding Operating Systems(Windows,Unix,Macintosh etc). The course outlines the various functionalities of an operating system and focuses on the various methods it uses to achieve these. A good understanding of these issues and functionalities is heavily recommended for any computer science student, especially the ones who go into systems related work in the future.

The course does introduce a LOT of new concepts and students are advised to continuously keep in touch with the syllabus, else the syllabus seems to grow exponentially. A good help in this regard has been the conducting of frequent quizzes by the Professor which does keep a check on the student. The common material available for the course are the slides and two books prescribed by the professor which cater to the course requirements more than sufficiently.

The Lab -

The corresponding lab for the course will mostly run in parallel with the lectures. Hence it is advisable to be in touch with the latest happenings in the lectures. The assignments would involve programming in C. Some of the assignments have to be finished in the lab hours itself. Hence it is advisable to plan assignments properly before starting with programming. Good structured programming is a must, as the assignments tend to grow very large and also, some assignments may be reused in future assignments. Debugging large pieces of code can get very painful! Debuggers like gdb can turn out to be very useful. Also, never procastinate these assignments; you never know how much time it will take to complete!

(Post Credits Naman Agarwal,Pritish Kamath)

CS 213 - Data Structures and Algorithms


With two courses and a project under your belt, you probably realize the importance of "Efficiency" in programming, but so far you weren't expected to come up with efficient solutions to problems.

In the early stages of this course, you will learn how to quantify and compare algorithms (or procedures, or functions) in terms of "running time" and "space". The major portion of this course, however, deals with the design and efficient implementation of structures (linked-list, stack, queue, trees, heap, priority queue, hash table etc.) to store, access, modify, insert, delete and process data, and algorithms that make use of these data structures to provide efficient solutions to common problems. Sorting, in particular, will be done in excruciating detail, and you will learn about the implementation and variations of many sorting algorithms. Towards the end, you will learn the implementation of graphs and and a few graph algorithms. The contents of this course will be used in most other courses, which is why this is an important course.

As such, there isn't anything "really complicated" in this course, and if you attend classes and read the textbook regularly, you should be able to follow along pretty easily. Labs and exercises in this course will mostly involve implementation of data structures and related algorithms, with desired properties, and sometimes applications of these to specific problems. CS 213 is definitely the easier of the two core courses in the semester, in terms of both concepts and exercises, and it should not be difficult to do well if you put in a decent amount of effort.

(Post Credits - Aakash Rao NS)

Wednesday, July 13, 2011

Philosophy (HS 301)

Philosophy is an interesting course, especially for those who like to explore the different ideologies, beliefs and theories about human existence. The course is an introduction to various philosophical schools of thought. It deals with metaphysics (philosohpies about universe and human existence), epistemology (theories about knowledge and cognition), ethics and philosophy of logic. The prime focus in the first half of the course is on western philosophy while some of the Indian philosophical concepts are covered later. It touches on works of a wide range of philosophers like Socrates, Freud, Marx, Nietzsche and Descartes and is a good exercise for expanding one’s perspective about the world. It deals briefly with religious philosophy and covers with logical aspects of debating God’s existence via proofs and covers atheism, theism, agnosticism and the likes.

The course is enjoyable and fun, especially if you are a lover of logic and would love to apply rational arguments to debate various world views. It depends largely on the teacher and his approach to teaching and depending on that classes can be fun and interesting to boring and drowsy! Its merit lies in its foundation in rational arguments and argumentative, logical minds would enjoy it.

There is a fair bit of mugging involved and one will be required to write long answers incorporating one’s own views and arguments on relevant topics in the exam. However, once you have understood the philosophical concepts it is quite easy to elaborate on them and build upon them.

(post credits - Nikunj Jha (Fifth Year - Mechanical Engineering))

Philosophy (HS 301)

Philosophy is a course that looks at how philosophy has been studied over the years, rather than actually trying to find answers to life's questions which is actually what the pursuit of philosophy is all about (That is a lifelong commitment, not a 4-month 6-credit frivolity). What I mean is, the course is designed to look at every possible way to look at things, to explain every contrasting theory that goes about the same pursuit for truth, rather than actually looking for it.

The course content covers the major branches of philosophy, and the various theories involved, based on the arguments as put forward by the notable philosophers who helped evolve them. A fair number of examples and debates are involved in the lectures, although this would probably depend on the professor teaching the course.


Understanding the concepts is not especially difficult and the simplest and easiest way to go about this would be to attend the lectures AND listen to the professor. Exams are predominantly subjective in nature, and it would probably help if you are the opinionated and argumentative sort, or at least keep the answers that way. There isn't necessarily a right or wrong answer, and its how well you present your opinion that matters (though, of course, you can't be factually incorrect and get away with it).

(post credits - Anurag Bhide(Fourth year Energy Department))