First part of a two-part sequence in Java programming. Fundamental concepts of structured programming; procedures and data structures with a focus on problem solving strategies and implementation; introduction to concepts of informal specification, informal reasoning about program behavior, debugging, and ad hoc testing. Three lecture hours and one discussion hour a week for one semester. Only one of the following courses may be counted: Computer Science 303E, 305J, 312, 312H. Credit for Computer Science 312 may not be earned after a student has received credit for Computer Science 314 or 314H. Prerequisite: Credit with a grade of at least C- or registration for Mathematics 408C, 408K, or 408N.