Curriculum Revision


 * Intro Majors/Non-Majors (This is a course)

!! Core Topic Areas (These are not courses)
 * Programming
 * Mathematical Foundations (Discrete, Computability)
 * Freshman Math Placement Data
 * Networking, Administration, Security
 * Systems, Administration, Security
 * Parallelism
 * Algorithms Analysis and Design
 * Hardware
 * Software Development

!! Determined later !! Curriculum Proposal
 * intelligent systems
 * information management
 * Core Curriculum (including Discrete Math? Does this include ethics, speaking, and writing as well?)
 * Course 1
 * Course 2
 * Course 3
 * Course 4
 * Course 5
 * Course 6
 * Course 7
 * Course 8
 * Course 9
 * CM 110 Public Speaking
 * EN 252 Technical Writing
 * UR 230 Technology, Public Policy and Urban Society
 * Tracks (up to 6 courses if Discrete Math is included above)
 * Software Engineering Track
 * System and Network Administration and Security Track

!!! Core Curriculum Proposal (Taken by all CS Majors, regardless of track)
 * We should add some database. (KRW)
 * We should add some networking. (KRW)
 * We should add some security/information assurance. (KRW)
 * Breadth-first intro (CS 101?). (KRW)
 * Intro programming (CS 140?). (KRW)
 * Data structures (CS 242?). (KRW)
 * Hardware (some combination of CS 253 and CS 352 in one course?). (KRW)
 * Operating Systems (CS 373?). (KRW)
 * Discrete Math (KRW)
 * Public Speaking (KRW)
 * Technical Writing (KRW)
 * Ethics and Social Impact (KRW)
 * Math and Science to satisfy ABET (KRW)

!!! Tracks (Proposed Structure)
 * We cannot support more than two tracks with current resources + 1-2 additional faculty recommended by the reviewer. (KRW)
 * Whatever curriculum we develop should have a common core for (at least) the first two years, and then differentiate the tracks afterward. (KRW)
 * This core will give the students the firm theoretical and breadth foundation that we are currently providing, and the ability to re-train as the field changes. (KRW)
 * We have to be careful that the core is still interesting and practical, so that students don't get turned off and leave the program before they get to their track courses. (KRW)

!! National Curricula
 * We should be sure to align whatever new curriculum we develop with the | CS2013 Curriculum Strawman report. (KRW)
 * We should be sure to align whatever new curriculum we develop with the | ABET Criteria for Accrediting Computing Programs, 2012-2013. (KRW)

!!! Professional Practice (From CS2013) ''The education that undergraduates in Computer Science receive must adequately prepare them for the workforce in a more holistic way than simply conveying technical facts. Indeed, “soft skills” (such as teamwork and communication) and personal attributes (such as identification of opportunity and risk) play a critical role in the workplace. Successfully applying technical knowledge in practice often requires an ability to tolerate ambiguity and work well with others from different backgrounds and disciplines. These overarching considerations are important for promoting successful professional practice in a variety of career paths.''

!!! Principles (From CS2013)
 * 1) Computer Science curricula should be designed to provide students with the flexibility to work across many disciplines. Computing is a broad field that connects to and draws from many disciplines, including mathematics, electrical and systems engineering, psychology, statistics, fine arts, linguistics, and physical and life sciences. Computer Science students should develop the flexibility to work across disciplines.
 * 2) Computer Science curricula should be designed to prepare graduates for a variety of professions, attracting the full range of talent to the field. Computer Science impacts nearly every modern endeavour. '-CS2013 takes a broad view of the field that includes topics such as “computational-x” (e.g., computational finance or computational chemistry) and “x-informatics” (e.g., eco-informatics or bio-informatics).-' Well-rounded CS graduates will have a balance of theory and application, as described in Chapter 3: Characteristics of Graduates.
 * 3) '-CS2013 should provide guidance for the expected level of mastery of topics by graduates-'
 * 4) '-CS 2013 must provide realistic, adoptable recommendations that provide guidance and 28 flexibility, allowing curricular designs that are innovative and track recent developments in the field.-'
 * 5) '-The CS2013 guidelines must be relevant to a variety of institutions.-'
 * 6) '-The size of the essential knowledge must be managed.-'
 * 7) Computer Science curricula should be designed to prepare graduates to succeed in a rapidly changing field. Computer Science is rapidly changing and will continue to change for the foreseeable future. Curricula must prepare students for lifelong learning and must include professional practice (e.g. communication skills, teamwork, ethics) as components of the undergraduate experience. Computer science students must learn to integrate theory and practice, to recognize the importance of abstraction, and to appreciate the value of good engineering design.
 * 8) '-CS2013 should identify the fundamental skills and knowledge that all computer science graduates should possess while providing the greatest flexibility in selecting topics.-'
 * 9) '-CS2013 should provide the greatest flexibility in organizing topics into courses and 54 curricula. -'
 * 10) '-The development and review of CS2013 must be broadly based. -'

!!! Characteristics of Graduates (From CS2013) ''Graduates of Computer Science programs should have fundamental competency in the areas described by the Body of Knowledge (see Chapter 5), particularly the core topics contained there. However, there are also competences that graduates of CS programs should have that are not explicitly listed in the Body of Knowledge. Professionals in the field typically embody a characteristic style of thinking and problem solving, a style that emerges from the experiences obtained through study of the field and professional practice. Below, we describe the characteristics that we believe should be met at least at an elementary level by graduates of computer science programs. These characteristics will enable their success in the field and further professional development. Some of these characteristics and skills also apply to other fields. They are included here because the development of these skills and characteristics must be explicitly addressed and encouraged by Computer Science programs.''


 * Technical understanding of Computer Science. Graduates should have a mastery of computer science as described by the core of the Body of Knowledge.
 * Familiarity with common themes and principles. Graduates need understanding of a number of recurring themes, such as abstraction, complexity, and evolutionary change, and a set of general principles, such as sharing a common resource, security, and concurrency. Graduates should recognize that these themes and principles have broad application to the field of computer science and should not consider them as relevant only to the domains in which they were introduced.
 * Appreciation of the interplay between theory and practice. A fundamental aspect of computer science is understanding the interplay between theory and practice and the essential links between them. Graduates of a computer science program need to understand how theory and practice influence each other.
 * System-level perspective. Graduates of a computer science program need to think at multiple levels of detail and abstraction. This understanding should transcend the implementation details of the various components to encompass an appreciation for the structure of computer systems and the processes involved in their construction and analysis. They need to recognize the context in which a computer system may function, including its interactions with people and the physical world.
 * Problem solving skills. Graduates need to understand how to apply the knowledge they have gained to solve real problems, not just write code and move bits. They should also realize that there are multiple solutions to a given problem and that selecting among them is not a purely technical activity, as these solutions will have a real impact on people’s lives. Graduates also should be able to communicate their solution to others, including why and how a solution solves the problem and what assumptions were made.
 * Project experience. To ensure that graduates can successfully apply the knowledge they have gained, all graduates of computer science programs should have been involved in at least one substantial project. In most cases, this experience will be a software development project, but other experiences are also appropriate in particular circumstances. Such projects should challenge students by being integrative, requiring evaluation of potential solutions, and requiring work on a larger scale than typical course projects. Students should have opportunities to develop their interpersonal communication skills as part of their project experience.
 * Commitment to life-long learning. Graduates of a computer science program should realize that the computing field advances at a rapid pace. Specific languages and technology platforms change over time. Therefore, graduates need to realize that they must continue to learn and adapt their skills throughout their careers. To develop this ability, students should be exposed to multiple programming languages, tools, and technologies as well as the fundamental underlying principles throughout their education.
 * Commitment to professional responsibility. Graduates should recognize the social, legal, ethical and cultural issues involved in the deployment and use of computer technology. They should respond to these issues from an informed perspective, guided by personal and professional principles. They must further recognize that social, legal, and ethical standards vary internationally.
 * Communication and organizational skills. Graduates should have the ability to make succinct presentations to a range of audiences about technical problems and their solutions. This may involve face-to-face, written, or electronic communication. They should be prepared to work effectively as members of teams. Graduates should be able to manage their own learning and development, including managing time, priorities, and progress.
 * Awareness of the broad applicability of computing. Platforms range from embedded micro-sensors to high-performance clusters and distributed clouds. Computer applications impact nearly every aspect of modern life. Graduates should understand the full range of opportunities available in computing.
 * Appreciation of domain-specific knowledge. Graduates should understand that computing interacts with many different domains. Solutions to many problems require both computing skills and domain knowledge. Therefore, graduates need to be able to communicate with, and learn from, experts from different domains throughout their careers.

!!! Student Outcomes (From ABET) ''The program must have documented student outcomes that prepare graduates to attain the program educational objectives. There must be a documented and effective process for the periodic review and revision of these student outcomes.''

''Program Criteria for Computer Science and Simililarly Named Computing Programs. These program criteria apply to computing programs using computer science or similar terms in their titles. [CS]''

The program must enable students to attain, by the time of graduation:
 * An ability to apply knowledge of computing and mathematics appropriate to the discipline
 * An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution
 * An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs
 * An ability to function effectively on teams to accomplish a common goal
 * An understanding of professional, ethical, legal, security and social issues and responsibilities
 * An ability to communicate effectively with a range of audiences
 * An ability to analyze the local and global impact of computing on individuals, organizations, and society
 * Recognition of the need for and an ability to engage in continuing professional development
 * An ability to use current techniques, skills, and tools necessary for computing practice.
 * An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices. [CS]
 * An ability to apply design and development principles in the construction of software systems of varying complexity. [CS]

!!! Core Knowledge Areas and Hours (From CS2013)
 * border=1 width=80%
 * !Knowledge Area||!Tier1||!Tier2||
 * AL-Algorithms and Complexity||19||9
 * AR-Architecture and Organization||0||16||
 * CN-Computational Science||1||0||
 * DS-Discrete Structures||37||4||
 * GV-Graphics and Visual Computing||2||1||
 * HC-Human-Computer Interaction||4||4||
 * IAS-Security and Information Assurance||2||6||
 * IM-Information Management||1||9||
 * IS-Intelligent Systems||0||10||
 * NC-Networking and Communication||3||7||
 * OS-Operating Systems||4||11||
 * PBD-Platform-based Development||0||0||
 * PD-Parallel and Distributed Computing||5||10||
 * PL-Programming Languages||8||20||
 * SDF-Software Development Fundamentals||42||0||
 * SE-Software Engineering||6||21||
 * SF-Systems Fundamentals||18||9||
 * SP-Social and Professional Issues||11||5||

!!! Curriculum (From ABET) ''The program’s requirements must be consistent with its program educational objectives and designed in such a way that each of the student outcomes can be attained. The curriculum must combine technical and professional requirements with general education requirements and electives to prepare students for a professional career and further study in the computing discipline associated with the program, and for functioning in modern society.''

''The technical and professional requirements must include at least one year of up-to-date coverage of fundamental and advanced topics in the computing discipline associated with the program. In addition, the program must include mathematics appropriate to the discipline beyond the pre-calculus level. For each course in the major required of all students, its content, expected performance criteria, and place in the overall program of study must be published.''

''Program Criteria for Computer Science and Simililarly Named Computing Programs. These program criteria apply to computing programs using computer science or similar terms in their titles. [CS]''

Students must have the following amounts of course work or equivalent educational experience:
 * Computer science: One and one-third years that must include:
 * Coverage of the fundamentals of algorithms, data structures, software design, concepts of programming languages and computer organization and architecture. [CS]
 * An exposure to a variety of programming languages and systems. [CS]
 * Proficiency in at least one higher-level language. [CS]
 * Advanced course work that builds on the fundamental course work to provide depth. [CS]
 * One year of science and mathematics:
 * Mathematics: At least one half year that must include discrete mathematics. The additional mathematics might consist of courses in areas such as calculus, linear algebra, numerical methods, probability, statistics, number theory, geometry, or symbolic logic. [CS]
 * Science: A science component that develops an understanding of the scientific method and provides students with an opportunity to experience this mode of inquiry in courses for science or engineering majors that provide some exposure to laboratory work. [CS]

!!! Faculty (From ABET) ''Each faculty member teaching in the program must have expertise and educational background consistent with the contributions to the program expected from the faculty member. The competence of faculty members must be demonstrated by such factors as education, professional credentials and certifications, professional experience, ongoing professional development, contributions to the discipline, teaching effectiveness, and communication skills. Collectively, the faculty must have the breadth and depth to cover all curricular areas of the program.''

''The faculty serving in the program must be of sufficient number to maintain continuity, stability, oversight, student interaction, and advising. The faculty must have sufficient responsibility and authority to improve the program through definition and revision of program educational objectives and student outcomes as well as through the implementation of a program of study that fosters the attainment of student outcomes. ''

Some full time faculty members must have a Ph.D. in computer science.