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))

Psychology (HS 303)

Psychology:

At the outset, this seems to be a very interesting course. It deals with many psychological experiments, conditioning, emotions, the brain, theories of intelligence etc. - basically all the interesting ideas that are known about how people think and behave. The content is good, but I personally found a bit unsatisfying - the way in which the course was conducted. For a good part of the first half of the course, I felt discussions were not carried out as much as they should have been. Also, the first instructor did not share slides, so you needed to write incessantly, which spoiled the learning experience. Most of the reading would have to be done from the book. Slides are sufficient but consulting the book can provide good insights into the subject, though from an examination point of view the book is not really a need in any sense.You will need to attend lectures - because profs would share a lot of important details.

Importantly, exams are objective in nature, with a couple of descriptive questions thrown in. So studying for them becomes easier. If you study properly, and attend lectures, then it is easy. There will be a lot of room for intellectual discussions throughout the course, and you would enjoy if you participate in them. If you can't get yourself to talk much in class, then you'd only be hearing, in which case it could get boring. As for grading, I don't think it is too hard to manage a good grade if you put in some effort.

The most important point is that if you are interested in psychology, then this course would be good. But such courses are good only if you can think about things for yourself, and talk to people.

(post credits - Nishant Totla)

Reading Literature (HS 305)

Reading Literature is a good, fun course if you are interested in those sort of things. The course is(at least was) divided into four parts - poetry, essays, short stories and drama. The course will typically involve reading up a piece or two at home and then analyzing it in detail in class. It is kind of like what English used to be in school, but I thought it involved more thinking and analysis. The course is enjoyable, and attending clasees is fun. The exam questions involve analysis of seen or unseen pieces of literature. Occassionally, the instructor would expect the analysis to be of a certain kind or pertain to a certain thing that was discussed in class, hence attending classes is more advisable.
In summary, this course is a lot more fun than the other HS courses if you like reading in general. However, it also requires slightly more effort towards the course (reading the passages etc). Take it only if you are interested.

(post credits - Ravi Bhoraskar)

Sunday, June 26, 2011

Systems Courses (OS/DBIS/Arch)

As you enter your third year, you shall encounter a broad field of computer science known as Computer Systems. This is in contrast to theory, which you have studied so far(algo, discrete etc). Systems involves less of mathematics, and is more hands-on things about how stuff actually works inside a computer. Being more about real systems, these subjects shall introduce a large number of facts and a lot of new concepts, and shall deal with the interplay between these things. There shall be fewer 'deep' concepts, but a significantly large material in the curriculum. Thus, it is relatively easy to score decently in these subjects, provided you are regular. Going to classes, and staying up to date with the curriculum is highly recommended. Since the contents of the course are large, lagging behind shall not be to your benefit, and it will be tough to learn the whole syllabus one day before the midsems.