Okay, so I'm a college student approaching my (second) senior year and I have the option of either taking CS2 or discrete mathematics. My schedule is completely full. CS2 is "Data structures and algorithmic techniques that are fundamental in programming solutions to complex problems. Abstract data types, lists, stacks, queues, trees, graphs. Array-based and linked structures. Use and simple analysis of iterative and recursive algorithms. Introduction to object-oriented programming." I am strongly considering graduate school. I feel that my mathematics could be stronger (I've only completed Calc III, Linear Algebra, and Differential Equations). I am taking CS 1 right now and learning Java, and I'm half way through the course and feel as though at the end of it I'll know how to program but not be very good at it. I am also weakly considering engineering. My personal preference would be to take both... I really want to take both, and just can't, which is why I'm taking my future into account. Advice as to which course I ought to take?