Review by: Sumanth Kandala
To complete a CS minor, one can either choose five 6-credit courses offered as a minor by the department or four minor courses and one elective from the CS Department to complete a total of 30 credits. Not a lot of courses offered as minors by the department have hard course prerequisites, which makes the selection of courses a tad bit easier when compared to the other minors. While the course offerings change every year, some of the courses offered by the department (in the past few years) as a minor are:
- CS 213: Data Structures and Algorithms
- CS 207: Discrete Structures
- CS 218: Design and Analysis of Algorithms
- CS 224: Computer Networks
- CS 228: Logic for CS
- CS 347: Operating Systems
- CS 416: Computer and Network Security
- CS 419: Introduction Machine Learning
Additionally, some popular courses that run as electives in the Computer Science department are:
- CS 763: Computer Vision
- CS 663: Digital Image Processing
- CS 675: Computer Graphics
- CS 726: Advanced Machine Learning
- CS 736: Medical Image Processing
A Computer Science minor is a good fit for students from most departments as it aims to cover basic concepts which are useful to most engineers. That being said, it might be extremely useful to those who intend to pursue their career in interdisciplinary fields such as Robotics or Autonomous Systems.
Courses Completed & Reviews:
CS 224: Computer Networks - This course has no prerequisites, which is why most people pursue this course in their second year. The course is very theoretical and covers concepts about the architecture of the internet, various protocols, routing, switching and wireless networking. Usually, the course also has some programming assignments on developing a multi server-client system (which might require a bit of coding skills), TCP analysis, etc.
CS 213: Data Structures and Algorithms - This course acts as a prerequisite for several other Computer Science courses and can be thought of as an extension to CS 101, making it extremely useful for internships/placements (Note that the course only provides the background and is not a crash course for placements). The topics covered in this course are analysis of algorithms, sorting techniques, various data structures such as queues, stacks, trees and search algorithms such as BFS and DFS. Due to the high demand for this course, it often (not always) runs in both semesters.
CS 419: Introduction to Machine Learning - While this course does not have any hard prerequisites (varies from instructor to instructor), it is highly recommended to have a strong background on Data Structures & Algorithms and Statistics. This course can act as a prerequisite for those who want to pursue advanced graduate-level courses in Machine Learning such as CS 726. The topics covered in this course are Supervised Learning Methods like Decision Trees, Generative Classifiers like Naive Bayes, Support Vector Machines, Logistic classifiers, Neural Networks and Unsupervised Learning Methods like K-means clustering, EM. Due to the high demand for this course, it often (not always) runs in both semesters.
CS 416: Computer and Network Security - This course has CS 224 (Computer Networks) as its prerequisite and might be very interesting for those who love cryptography. Some topics that will be covered in this course are encryption algorithms such as RSA, AES, key exchange protocols, digital signatures, digital certificates, hashing algorithms such as HMAC, SHA-1 and various network attack techniques and their defences and intrusion detection systems.
CS 347: Operating Systems - The topics covered in this course are process management, threads, scheduling, memory management, synchronization, file systems and I/O management. The recommended text for this course (OSTEP) is very enjoyable and a must-read for those who are interested in Operating Systems.
Do not expect to learn a lot from just the minor courses as most of these courses act as introductory courses. The minor courses help you with the basic concepts and act as a prerequisite for other graduate-level Computer Science courses that one might be interested in. Additionally, a minor degree when marketed well in your Resume and Statement of Purpose, can help you get better opportunities in placements and university applications (for higher studies). In some cases (albeit rare cases), companies (such as the company I was placed at) prefer those who pursued a minor in Computer Science. If you are looking to change your field or apply to an interdisciplinary program at a university such as Robotics and Autonomous Systems, a Computer Science minor will surely help you justify your motivation and interest in the field, and will also ensure that you complete the basic course requirements that such programs in a university may have. Many professors from the Computer Science department are often reluctant to entertain non-CS undergraduates for project requests. Doing a minor course not only gives you a formal background to various important concepts, but also offers a chance to interact with some great professors from the Computer Science department, boosting the chances to work with them on a research project.