-
Department Info
-
-
Admissions
-
-
Academics
-
-
-
Research
-
-
-
Main navigation | Main content
3081 is a required undergraduate course which science students usually take in their first semester of their junior year. It focuses on skills, tools, and theory related to students becoming good computer programmers. More specifically it covers such topics as an introduction to the software development process, software development tools (e.g., how to use a debugger or version control system), the C++ programming language, UML, good design and coding practices, and professional skills such as writing and working in groups. 3081 has two major goals: first to give students the skills and knowledge they need to become better programmers, and second to give students the programming skills they need to do well in 4xxx- and 5xxx-level programming intensive classes.
3081 is a writing intensive class, and is also a 'project' class for CLA. As such, it needs to include extensive writing and a substantial projects, in accordance with the respective University and CLA guidelines.
Principles of programming design/analysis. Concepts in software development. Uses C/C++ language to illustrate key ideas in program design/development, data structures, debugging, files, I/O, state machines, testing, and coding standards.
Since the following topics are interrelated, there are many ways to organize the content. For example, the different topics could be interwoven.
Programming is a central part of computer science. In CS I and II students learn the basics of programming in Scheme and Java. In this class students learn how to program in a different language, C++, learn how to become better programmers, and learn some additional aspects of programming, (like dealing with large programs) that are not covered in CS I and II. This should better prepare students for advanced classes with a heavy programming content as well as for programming jobs in industry.
Most students will take 3081 in their junior year. It is one of the courses required for CSci majors.
Computer Science II (CSci 1902) and Computer Organization (CSci 2021). 3081 assumes that students have some experience in C programming (from 2021), and object-oriented programming (from 1902), as well as in fundamental data structures (1902) and concepts (such as recursion, top-down design, etc.) used in programming. It does not assume any previous C++ experience.
Since the course is writing intensive, students should also have taken their freshman level English composition class by the time they take 3081.
Currently no classes have 3081 as a prerequisite; however, students are strongly encouraged to take 3081 before any programming intensive 4xxx or 5xxx CSci classes. More specifically, students are encouraged to take 3081 prior to, or at latest at the same time as the required class CSci 4061. And students should take 3081 before electives such as CSci 4107/5107, CSci 5115, and CSci 5801 that involve either much programming or large programming projects.
4 credits, 3 large class + 1 lab hour per week. Lab will primarily be for short exercises based upon the material in lecture. For example, many labs will involve C++ exercises and/or software tools.
Upon successful completion of the course students should have the following general skills and proficiencies: