Tuesday, July 27, 2004

A Sample CS Curriculum

This post is best read in conjuction with, or immediately after the previous post, which describes the general outline for the curriculum. Here I present the courses which a hypothetical student majoring in Computer Science could take to satisfy the requirements. His (unrelated) interests are mainly Theoretical Computer Science and Physics.

First Semester
Mathematics I (3)
Physics I (3) (Selected topics from Mechanics and Optics)
Chemistry (3)
Biology (3)
Computing I (3)
Engineering Workshop (3)
Methods I (2) (Writing)

Second Semester
Mathematics II (3) (Algebra)
Physics II (3) (Selected topics from electromagnetism)
Applied Mathematics I (3) (Probability and Statistics)
Measurement Techniques (3)
Computing II (3) (CS version: science, not programming)
Engineering Graphics (3)
Methods II (2) (Design)

Third Semester
Mathematics III (3) (Differential Equations and Complex Analysis)
Circuit Theory and Introduction to Electronics (3)
Engineering/Science Elective I (3) (Modern Physics)
Humanities Elective I (3) (Introduction to Economics)
PC 1 (3) (Discrete Mathematics)
PC 2 (3) (Digital Electronics)

Fourth Semester
Applied Math II (3)
Engineering/Science Elective II (3) (Mechanics of Solids)
Humanities Elective II (3) (Principles of Management)
PC 3 (3) (Data Structures and Algorithms)
PC 4 (3) (Microprocessors)
PC 5 (3) (Graphs and Networks)

Fifth Semester
CDC 1 (3) (Theory of Computing)
CDC 2 (3) (Operating Systems)
CDC 3 (3) (Database Management)
CDC 4 (3) (Theory of Programming Languages)
Applied Math III (3)

Sixth Semester
CDC 5 (3) (Computer Networks)
CDC 6 (3) (Computer Organisation)
CDC 7 (3) (Compiler Construction)
CDC 8 (3) (Artificial Intelligence)
Control Systems (3)

Seventh Semester
Elective (3) (Parallel Computing)
Elective (3) (Advanced Algorithms)
Elective (3) (Computational Complexity)
Elective (3) (Theory of Relativity)
Elective (6) (2 Independent Study projects)

Eighth Semester
Project/Practice School

As a practical matter, some of the courses listed need not, strictly speaking, be requirements for Computer Science students. In the place of 'Theory of Programming Languages' and 'Compiler Construction' a single course could be taught in the second semester. Artificial Intelligence could also be removed as a hard requirement. In the two vacancies created, students could choose from one of several two-course sequences that the department may offer, which could include (among others):
a) Advanced Algorithms and Computational Complexity
b) Artificial Intelligence and Machine Learning
c) Image Processing and Multimedia Computing
d) Data Warehousing and Data Mining

1 comment:

Anonymous said...

First of all... I have to say this... I remember being a little cynical (actually, that's quite an understatement) about filling up that form last sem and all. But I must say now, I am completely and totally converted. Man, you seem to have really worked at this and I must say I really, really, really appreciate the effort.

Now, coming to the curriculum... yes, it's a lot better, it a major improvement on how things are right now and personally, I would have loved to have studied under this schedule. What has me a little worried is the feasibility of implementing something like this, it will surely require major changes. But even a chhut change towards this will definitely be a start, I hope those people still on campus working for this cause do end up creating a ripple in the inertia that engulfs BITS... perhaps even more than a ripple.

Also, any comments, suggestions, criticism, blah blah required, I'll be more than happy to come forward. Like I said, I have been converted!

- Rahul Misra

All the best, Nitish... the fact that you'll crack the scene there too goes without saying... but do keep blogging...