Hi all, long time reader, 2nd time poster. The long story: I'm a physics major in my senior year, and I've recently developed an interest in computational physics/chemistry and I'm considering pursuing it in graduate school. I became interested in computational science when I took a basic programming course, and began doing some research involving density functional theory. I have room for one elective next semester before I graduate, so I need advice about which one to pick. I have already taken a basic course in programming (java: data types, control structures, basic OOP, etc.) and I'm taking one right now about data structures (java: abstract data types, recursion, searching, sorting, etc). I'm also currently taking a course in computational physics using Fortran. The short story: Which of these courses would be most useful for a computational physicist? Course 1: Assembly Language and Computer Organization Topics in Assembly Language Concepts, introduction to Computer Organization, Machine Representation of Information, Models of Computer Architecture, Instruction and Addressing Fundamentals, Control Structures. Objectives: 1. To learn elements of a Von Neumann computer and its implementations. 2. To understand integer, character, and float data presentations. 3. To understand RISC and CISC processor architecture. 4. To understand stack (in memory) and its usage in processing functions. 5. To understand concepts of linking, interrupts, and traps. 6. To have a working knowledge of C and assembly language. or Course 2: Object Oriented Programming (in Java) Introduction and analysis of the object-oriented programming paradigm and concepts. Design of classes and objects in problem solving. Use of object libraries. Objectives: 1. Describe the differences between procedural and object-oriented programming paradigms. 2. Write small to medium size computer programs using an object-oriented approach. 3. Apply object-oriented concepts to algorithm development. 4. Create solutions using reusable software components from object libraries and application programming interface (API). 5. Develop maintainable and reusable software and analyze their characteristics. I plan on learning the contents of both courses eventually, I'm just wondering which course would be of the most immediate use. Thanks!