An introduction to software concepts and implementation, emphasizing problem solving through abstraction and decomposition. Introduces processes and algorithms, procedural abstraction, data abstraction, encapsulation, and inheritance. Recursion, iteration, and simple data structures are covered. Representation invariants, loop invariants, and exception handling are used as techniques for writing correct and robust programs. The impact of data representation on performance is discussed but not emphasized. Concepts and skills are mastered through programming projects, many of which employ graphics to enhance conceptual understanding. Java, an object-oriented programming language, is used as the vehicle of exploration. Prerequisites: Comfort with algebra and geometry at the high school level is assumed. Patience and good planning, organization, and problem solving skills will help you to succeed. Prior programming experience is helpful, but not necessary. Credit 3 units.
You will learn how to solve problems by decomposing them into logical pieces, and you will learn how to capture common patterns in order to save time and effort in the development process. You will also discover that computer programming is an art, as you strive not only for solutions that not only "work" but also are "elegant." Concepts are taught in the object-oriented programming paradigm.
CSE131 is not an easy course, but students find it rewarding and well worth the effort. Expect to spend an average of 10 hours per week outside of class on CSE131 coursework.
CSE131 is the recommended first course for computer science majors, minors, or anyone else who is interested in an introduction to computer science concepts.