Curricular Standards

ACM/IEEE

The Association for Computing Machinery (ACM) is a leading international organization for computing professionals, and they periodically release guidelines for computing curricula to help educational institutions design their programs.

The ACM curriculum guidelines cover various aspects of computing education, including computer science, information systems, information technology, software engineering, and cybersecurity. These guidelines aim to provide a framework for colleges and universities to develop comprehensive, relevant, and up-to-date computing programs.

Here are some key components of the ACM computing curriculum:

  • Core knowledge areas: The curriculum is divided into several knowledge areas, such as algorithms and complexity, programming languages, software development fundamentals, systems, and computer organization and architecture.

  • Elective knowledge areas: In addition to the core knowledge areas, the ACM curriculum also offers elective areas to allow students to specialize in specific topics, such as artificial intelligence, human-computer interaction, and data science.

  • Skill development: The curriculum emphasizes the development of skills such as problem-solving, critical thinking, communication, and teamwork.

  • Ethical considerations: The ACM curriculum incorporates ethical considerations in computing, such as understanding the social impact of technology, privacy issues, and professional responsibility.

  • Project-based learning: The curriculum encourages hands-on, project-based learning to help students apply their knowledge in real-world situations.

  • Continuous improvement: The ACM regularly updates its curriculum guidelines to keep up with the rapidly evolving field of computing.

ABET

While ABET (Accreditation Board for Engineering and Technology) does generally align with ACM (Association for Computing Machinery) and IEEE (Institute of Electrical and Electronics Engineers), there are slight differences in how they express program outcomes. This is primarily because ABET covers a wider range of disciplines, including applied and natural science, computing, engineering, and engineering technology, while ACM and IEEE’s Computer Society specifically target computing and related fields.

ABET uses a set of “Student Outcomes” (labeled 1-7) for programs in computing:

  1. An ability to analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions.

  2. An ability to design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline.

  3. An ability to communicate effectively in a variety of professional contexts.

  4. An ability to recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles.

  5. An ability to function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline.

  6. An ability to apply computer science theory and software development fundamentals to produce computing-based solutions.

  7. A familiarity with the impact of computing on individuals, organizations, and society, including ethical, legal, security, and global policy issues.

This is quite similar to ACM and IEEE’s outcomes, but with a slightly broader perspective that considers the impacts of computing on society and the ethical responsibilities of computing professionals. ABET also places strong emphasis on communication skills and teamwork.

Note

Please note that you should check the most recent ABET, ACM, and IEEE curricular guidelines to ensure you have the most up-to-date information.

NICE

The National Initiative for Cybersecurity Education (NICE), led by the National Institute of Standards and Technology (NIST) in the U.S., doesn’t provide a specific curriculum structure for Cybersecurity B.S. programs, but they do provide a comprehensive Framework that can guide educational institutions in developing or improving Cybersecurity programs.

The NICE Cybersecurity Workforce Framework (NICE Framework) organizes cybersecurity work into 7 high-level categories, each containing several specialty areas. These categories are:

  1. Securely Provision (SP): Conceptualize, design, procure, and/or build secure information technology (IT) systems.

  2. Operate and Maintain (OM): Provide support, administration, and maintenance necessary to ensure effective and efficient IT system performance and security.

  3. Oversee and Govern (OV): Provide leadership, management, direction, or development and advocacy so the organization may effectively conduct cybersecurity work.

  4. Protect and Defend (PR): Identify, analyze, and mitigate threats to internal IT systems and/or networks.

  5. Analyze (AN): Perform highly specialized review and evaluation of incoming cybersecurity information to determine its usefulness for intelligence.

  6. Collect and Operate (CO): Provide specialized denial and deception operations and collection of cybersecurity information that may be used to develop intelligence.

  7. Investigate (IN): Investigate cybersecurity events or crimes related to information technology (IT) systems, networks, and digital evidence.

In each specialty area, the Framework lists a set of Abilities, Knowledge, and Skills (KSA) required, as well as specific tasks often associated with work in that area.

When developing a B.S. program in Cybersecurity, educational institutions can use the NICE Framework as a reference to ensure that their curriculum covers the essential areas of cybersecurity work and provides students with the required KSAs.

Note

However, it’s important to note that different institutions might emphasize different specialty areas based on their particular focus or expertise, the needs of their local or regional job market, and other factors. Therefore, there could be some variation in the specific courses and learning outcomes of different Cybersecurity B.S. programs.

ISCB and Bioinformatics/Computational Biology

What does ISCB (International Society for Computational Biology) for Bioinformatics programs say about required computer science background for Bioinformatics B.S. programs?

The International Society for Computational Biology (ISCB) has recommended guidelines for undergraduate bioinformatics programs. While they don’t provide a specific list of computer science courses, they emphasize that a well-rounded bioinformatics curriculum should include a solid grounding in computer science. The core competencies they suggest in the computational area are:

  1. Programming: Bioinformatics students should be proficient in at least one scripting language (like Python or Perl) and one systems programming language (like Java or C++). They should be comfortable writing programs, testing code, using version control, and debugging.

  2. Algorithms and Data Structures: Bioinformatics students should understand common data structures and algorithms, particularly those used in bioinformatics applications like dynamic programming, graph algorithms, and string matching algorithms.

  3. Databases: Familiarity with relational databases, SQL, and possibly NoSQL databases is also important, as bioinformatics often involves managing and querying large biological databases.

  4. High-Performance Computing: Given the large datasets often used in bioinformatics, students should also understand the basics of parallel computing and be able to write programs that can run on high-performance computing clusters.

  5. Software Engineering: Students should understand good software development practices, like code review and testing, which can help in building larger software tools and pipelines in bioinformatics.

  6. Data Science: Given the large and complex nature of biological datasets, skills in data analysis and statistics, including the use of tools like R, can also be very important.

Note

the exact list of computer science courses may vary from one program or institution to another, and some topics may be integrated within bioinformatics-specific courses rather than being taught as separate computer science courses. For a precise understanding of course requirements, it’s always best to refer to the curricular details provided by the specific degree program or institution.

The Rest of the Story: Analyzing our (Loyola’s) programs

Let’s take a look at specific learning outcomes (George and William to check) for typical computing (computing-related) degree programs. For this analysis, we are looking at programs we offer at Loyola University Chicago:

  • B.S. in Computer Science

  • B.S. in Software Engineering

  • B.S. in Information Technology

  • B.S. in Cybersecurity

We offer others:

  • B.S. in Physics + Computer Science

  • B.S. in Mathematics + Computer Science

  • B.S. in Bioinformatics

  • B.S. in Neuroscience [Computational Neuroscience]

  • B.S. in Data Science

B.S. in Computer Science

In a Bachelor of Science (B.S.) in Computer Science program, the curriculum typically aims to achieve a set of outcomes to prepare students for a wide range of computer science related careers, or for further academic pursuits in the field. Here are some of the most common program outcomes:

  1. Knowledge of Core Computer Science Concepts: This includes understanding data structures, algorithms, computer architecture, principles of software engineering, databases, networking, and more. The goal is to give students a comprehensive grounding in the key ideas that underpin computer science.

  2. Problem-Solving Skills: Graduates should be able to use their knowledge of computer science to solve complex problems. This includes the ability to design, implement, and evaluate a computational system to meet a given set of requirements.

  3. Proficiency in Programming: Students should be proficient in at least one high-level programming language and have experience with several others. They should also be familiar with the principles of programming languages and be able to learn new languages as needed.

  4. Understanding of Mathematical and Scientific Principles: Graduates should understand the mathematical and scientific principles that underpin computer science. This includes discrete mathematics, probability and statistics, and more.

  5. Ethical and Social Implications: An understanding of professional, ethical, legal, security, and social issues and responsibilities as they pertain to computer science.

  6. Teamwork and Communication: Students should be able to work effectively on teams to accomplish a common goal, and they should be able to communicate their ideas and work effectively both verbally and in writing.

  7. Ability to Learn Independently: As technology continually evolves, it’s crucial that students develop the ability to learn new tools, techniques, and concepts independently.

  8. Understanding of Software Development Practices: This includes knowledge of different software development methodologies, as well as experience with software testing, debugging, and version control.

  9. Preparation for Continued Study or Work: Students should be prepared to enter a top graduate program in computer science or to begin a professional career in the field.

  10. Application of Computer Science: Students should be able to apply computer science methods and tools to another field of interest, such as biology, finance, or art.

These outcomes can vary depending on the institution, but the ones listed above are common to many B.S. in Computer Science programs.

B.S. in Software Engineering

While there’s considerable overlap between Computer Science and Software Engineering degrees, a Bachelor of Science in Software Engineering typically has a heavier emphasis on the principles and practices of designing and maintaining large software systems. Here are some typical program outcomes:

  1. Knowledge of Software Development Lifecycle: Students should understand the various stages of software development, from requirements elicitation, to design, implementation, testing, and maintenance.

  2. Proficiency in Programming: Graduates should be proficient in several programming languages and have a deep understanding of object-oriented design and other software paradigms.

  3. Software Design Skills: Graduates should be able to design, implement, validate, and maintain software systems. This includes the ability to work with complex software architectures and design patterns.

  4. Understanding of Software Quality Assurance: This includes knowledge of testing methodologies, debugging, and techniques to ensure software reliability, usability, security, and performance.

  5. Project Management Skills: Students should understand software project planning and management techniques. This includes knowledge of cost estimation, risk management, project scheduling and tracking.

  6. Teamwork and Communication: Similar to computer science, students should be able to work effectively on teams and be able to communicate their ideas and work effectively both verbally and in writing.

  7. Ethical and Professional Responsibility: Graduates should understand professional, ethical, legal, and societal responsibilities related to software engineering.

  8. Understanding of Systems-Level Concepts: Students should have a basic understanding of hardware, networks, and other systems-level concepts as they relate to software development.

  9. Problem-Solving Skills: Graduates should be able to use their knowledge to solve complex problems, and have the ability to design and conduct experiments, as well as to analyze and interpret data.

  10. Adaptability to New Technologies: As technology continues to evolve rapidly, students should be prepared to learn and adapt to new software development tools and methodologies.

As with the previous set of outcomes, these can vary depending on the specifics of the institution and the program, but they provide a general idea of what most B.S. in Software Engineering programs aim to achieve.

B.S. in Information Technology

A Bachelor of Science in Information Technology program typically aims to equip students with a broad range of technical skills, while also providing them with an understanding of business processes. Here are some common program outcomes:

  1. Understanding of IT Fundamentals: This includes a broad understanding of areas such as networking, databases, website development, information systems, and IT project management.

  2. Proficiency in Technical Skills: Graduates should be proficient in a variety of programming languages, operating systems, and hardware configurations.

  3. Knowledge of Information Systems: This includes understanding how information systems are used to support business processes, strategic goals, and decision making.

  4. Problem-Solving Skills: Students should be able to analyze a problem and identify and define the computing requirements appropriate to its solution.

  5. Project Management Skills: Students should understand the principles of project management as they relate to IT projects, including planning, coordination, execution, and evaluation.

  6. Understanding of IT Infrastructure: This includes knowledge of IT architecture and infrastructure, such as networks, operating systems, software applications, and data centers.

  7. Understanding of IT Security: Students should have a basic understanding of the principles and best practices of information security, including how to protect networks, systems, and data from cyber threats.

  8. Communication Skills: As with the other degrees, students should be able to communicate complex information effectively, both verbally and in writing.

  9. Knowledge of Professional and Ethical Issues: Students should understand the legal, social, and ethical issues related to information technology.

  10. Adaptability to New Technologies: IT is a rapidly evolving field, and students should be prepared to learn and adapt to new technologies and tools.

These outcomes aim to prepare students for a wide range of IT roles, such as IT Support Specialist, Network Administrator, System Analyst, or IT Project Manager, and can vary depending on the specific focus of the program at a given institution.

B.S. in Cybersecurity

A Bachelor of Science in Cybersecurity program focuses on equipping students with the skills and knowledge necessary to protect computer systems, networks, and data from cyber threats. Here are some common program outcomes:

  1. Understanding of Cybersecurity Fundamentals: This includes knowledge of how to protect and defend computer systems and networks by ensuring their availability, integrity, authentication, and confidentiality.

  2. Proficiency in Identifying and Mitigating Threats: Graduates should be able to identify potential threats and vulnerabilities in a system, and know how to put measures in place to mitigate them.

  3. Knowledge of Cybersecurity Tools and Technologies: Students should be proficient in using current tools and technologies to prevent and detect cyber threats.

  4. Skills in Risk Management: This includes understanding how to assess the risk to a system, how to quantify that risk, and how to implement measures to manage it.

  5. Understanding of Legal and Ethical Issues: Graduates should understand the legal, ethical, and professional issues involved in cybersecurity, such as privacy concerns, intellectual property rights, and cybercrime laws.

  6. Incident Response Skills: Students should be able to develop and implement an effective incident response strategy to reduce the impact of security breaches and network intrusions.

  7. Understanding of Networking and Systems: This includes knowledge of networking protocols, operating systems principles, and how they can be secured.

  8. Knowledge of Cryptography: Students should understand the principles of cryptography and how it is used to secure data.

  9. Communication and Teamwork: As with the other degrees, students should be able to effectively communicate and collaborate in a team to achieve a common goal.

  10. Ability to Stay Current: Given the rapidly evolving nature of cybersecurity threats, students should be prepared to continuously learn and adapt to new challenges and technologies.

These outcomes aim to prepare students for a range of cybersecurity roles, such as Security Analyst, Security Engineer, or Security Architect, and can vary slightly depending on the specific focus of the program at a given institution.

B.S. in Data Science

A Bachelor of Science in Data Science program typically combines disciplines such as statistics, computer science, and business to equip students with the skills and knowledge necessary to extract insights from complex data. Here are some common program outcomes:

  1. Understanding of Data Science Fundamentals: This includes a solid understanding of the principles and tools of data science, including machine learning, data mining, data visualization, and statistics.

  2. Proficiency in Programming: Students should be proficient in programming languages commonly used in data science, such as Python and R, and be able to use them to manipulate and analyze data.

  3. Knowledge of Statistics and Mathematics: Students should understand the mathematical and statistical concepts that underpin data analysis, such as linear algebra, calculus, probability, and statistical inference.

  4. Data Management Skills: This includes understanding how to gather, clean, manage, and ensure the quality of large datasets. Knowledge of databases and SQL is typically important in this area.

  5. Machine Learning and Predictive Modeling: Students should be able to apply machine learning algorithms and predictive models to analyze data and make predictions.

  6. Data Visualization Skills: Graduates should be able to effectively visualize and communicate data insights using appropriate tools and techniques.

  7. Ethics in Data Science: Given the potential for misuse of data, students should understand the ethical considerations in data science, including privacy, data security, and responsible use of algorithms.

  8. Application of Data Science: Students should be able to apply data science techniques to real-world problems and make data-driven decisions.

  9. Teamwork and Communication: Students should be able to work effectively in teams and communicate complex data-related concepts to both technical and non-technical audiences.

  10. Adaptability to New Technologies: As with other tech fields, data science is rapidly evolving, and students should be prepared to learn and adapt to new tools and methodologies.

These outcomes aim to prepare students for a wide range of data science roles, such as Data Scientist, Data Analyst, or Machine Learning Engineer, and can vary depending on the specific focus of the program at a given institution.

What data structures are typically needed in a B.S. in Data Science degree?

A Bachelor of Science in Data Science program often requires knowledge of various data structures, as they are crucial for handling and manipulating data efficiently. Here are the most commonly used data structures in data science:

  1. Arrays and Lists: These are basic structures used to store and manipulate collections of data. They are often used to store numerical data for statistical analysis.

  2. Matrices: A matrix is a two-dimensional grid of numbers and is a fundamental tool in linear algebra. They are used in various machine learning algorithms, data visualization, and statistical analysis.

  3. Data Frames: This is a table-like data structure that can store data of different types (numbers, strings, etc.) in columns. It’s commonly used in data cleaning, data manipulation, and analysis.

  4. Trees: More specifically, decision trees and other variations like Random Forests, are used extensively in machine learning for both regression and classification tasks.

  5. Graphs: Graphs (nodes connected by edges) are used in network analysis, which has applications in social network analysis, telecommunications, and other areas where relationships between entities are important.

  6. Hash Tables (Dictionaries): These are used to store and retrieve data efficiently, often used in data preprocessing and cleaning stages.

  7. Sets: Used for storing distinct elements in no particular order. Sets are helpful for finding unique items and for operations such as union, intersection, difference, etc.

  8. Queues and Stacks: These are used in various algorithms and processes in data science.

  9. Tuples: These are ordered, immutable collections of elements. They’re often used in data manipulation tasks.

Remember that the choice of data structure in any given situation depends on the nature of the specific task, the operations that need to be performed on the data, and the computational complexity of these operations.

B.S. in Bioinformatics

A Bachelor of Science in Bioinformatics program typically combines biology, computer science, and statistics to enable students to analyze and interpret complex biological data. Here are some common program outcomes:

  1. Understanding of Bioinformatics Fundamentals: This includes a solid understanding of the principles and tools of bioinformatics, such as genomics, proteomics, data mining, and computational biology.

  2. Proficiency in Programming: Students should be proficient in programming languages commonly used in bioinformatics, such as Python and R, and be able to use them to manipulate and analyze biological data.

  3. Knowledge of Molecular Biology: Students should understand the principles of molecular biology, including DNA, RNA, proteins, and how they interact within cells.

  4. Data Analysis Skills: This includes understanding how to gather, clean, manage, and analyze large biological datasets. Knowledge of databases and SQL, as well as tools specific to bioinformatics like BLAST, can be important in this area.

  5. Machine Learning and Predictive Modeling: Students should be able to apply machine learning algorithms and predictive models to analyze biological data and make predictions.

  6. Understanding of Genomics: Graduates should be familiar with concepts such as gene sequencing, comparative genomics, and functional genomics.

  7. Ethics in Bioinformatics: Given the sensitive nature of some biological data, students should understand the ethical considerations in bioinformatics, including privacy, data security, and responsible use of algorithms.

  8. Application of Bioinformatics: Students should be able to apply bioinformatics techniques to real-world problems and interpret the results in a biological context.

  9. Teamwork and Communication: Students should be able to work effectively in teams and communicate complex bioinformatics concepts to both technical and non-technical audiences.

  10. Adaptability to New Technologies and Methods: Bioinformatics is a rapidly evolving field, and students should be prepared to learn and adapt to new tools, methodologies, and biological findings.

These outcomes aim to prepare students for a wide range of bioinformatics roles, such as Bioinformatician, Genomic Data Analyst, or Research Scientist, and can vary depending on the specific focus of the program at a given institution.

What Biology, Chemistry, Mathematics, and Computer Science courses are needed for a B.S. in Bioinformatics?

A Bachelor of Science in Bioinformatics program typically requires a mix of Biology, Chemistry, Mathematics, and Computer Science courses. Here’s a streamlined list of these foundational courses:

Biology Courses:

  1. Introduction to Biology (I & II)

  2. Genetics

  3. Molecular Biology

  4. Cell Biology

Chemistry Courses:

  1. General Chemistry (I & II)

  2. Organic Chemistry (I & II)

  3. Biochemistry

Mathematics Courses:

  1. Calculus (I & II)

  2. Linear Algebra

  3. Statistics

Computer Science Courses:

  1. Introduction to Computer Science (often in Python or Java)

  2. Data Structures

  3. Algorithms

In addition to these foundational courses, students usually take specialized courses in bioinformatics that cover topics like genomic data analysis, biological databases, and computational molecular biology. Also, some programs might require physics or other courses, and many programs encourage or require research experience. Be sure to check with specific institutions to see their exact requirements as these can vary.

What data structures are typically needed in a B.S. in Bioinformatics degree?

Bioinformatics often deals with large and complex biological data sets, and understanding the right data structures can be crucial for processing this data efficiently. Here are some data structures commonly used in bioinformatics:

  1. Arrays and Lists: These are fundamental data structures in any programming language, used for storing and manipulating collections of elements. In bioinformatics, they can be used to store sequences of nucleotides or amino acids.

  2. Strings: Strings are essential for representing and manipulating biological sequences such as DNA, RNA, and protein sequences.

  3. Hash Tables (Dictionaries): These are used to store and retrieve data in constant time. They can be used for tasks such as counting the frequency of specific nucleotide sequences in a DNA string or mapping genes to their associated information.

  4. Trees: Particularly, Binary Trees and Balanced Search Trees are used in various bioinformatics algorithms. Phylogenetic trees, which represent the evolutionary relationships among various biological species, are one example.

  5. Graphs: Graphs are used to model various biological phenomena. For example, protein-protein interaction networks, gene regulatory networks, and metabolic pathways can all be represented as graphs. In sequence assembly, De Bruijn graphs are a commonly used data structure.

  6. Priority Queues/Heaps: Used in many algorithms, including those for genome assembly and sequence alignment.

  7. Tries: These are tree-like structures that are particularly useful for storing and searching large biological sequences efficiently.

  8. Suffix Trees and Arrays: These are specialized data structures used in string matching problems, which are common in bioinformatics.

Each of these data structures has strengths and weaknesses depending on the specific problem being solved, so it’s essential to understand their characteristics and when to use each one.

What mathematics courses are commonly required for each of the above degree programs?

Mathematics provides a foundation for understanding and solving problems in many scientific and engineering fields. Here are typical mathematics courses that are commonly required in the degree programs you’ve mentioned:

Computer Science

  1. Calculus (often two semesters)

  2. Linear Algebra

  3. Discrete Mathematics

  4. Probability and Statistics

  5. Sometimes a course in Algorithms or Theory of Computation, which is mathematical in nature

Software Engineering

  1. Calculus (often one or two semesters)

  2. Linear Algebra

  3. Discrete Mathematics

  4. Statistics

  5. Some programs might require courses in Operations Research or Optimization

Cybersecurity

  1. Discrete Mathematics

  2. Statistics or Probability (especially relevant for cryptography and network security)

  3. Some programs might require a course in Algorithms or Cryptography, which can be mathematical in nature

Information Technology

  1. Statistics (very important for understanding data and making decisions)

  2. Some programs might require a course or two in Calculus

  3. Discrete Mathematics (especially if the program has a strong computing component)

Data Science

  1. Calculus (often two semesters)

  2. Linear Algebra

  3. Probability and Statistics (often several courses, as these are crucial for understanding and modeling data)

  4. Sometimes courses in Optimization or Numerical Analysis

Bioinformatics

  1. Calculus (often two semesters)

  2. Linear Algebra

  3. Probability and Statistics

  4. Some programs might require a course in Discrete Mathematics or Algorithms

Please note that specific requirements can vary widely from one program or institution to another. For precise information, it’s always best to check the curriculum of the specific program at the institution you are interested in.

Cracking the Math “problem” in various CS program(s)

What are the undergraduate computer science classes where calculus is needed as a prerequisite?

Calculus is often required for more advanced or specialized computer science courses, particularly those that involve continuous mathematics, algorithm analysis, or mathematical modeling. Here’s a list of some of the courses where calculus might be used:

  1. Algorithms: This course involves analyzing the running time of algorithms, which often requires understanding of calculus concepts, especially when considering the asymptotic behavior of functions.

  2. Machine Learning: Many machine learning algorithms are based on calculus. For example, optimization methods such as gradient descent require understanding of derivatives.

  3. Artificial Intelligence: AI also often uses calculus, particularly in areas like neural networks and other machine learning methods.

  4. Computer Graphics: The study of computer graphics involves quite a bit of mathematics, including calculus, as it’s needed to understand things like rendering, shading, and geometric transformations.

  5. Data Science/Big Data: These courses may involve calculus when they cover machine learning algorithms, optimization methods, or statistical analyses.

  6. Computer Vision: This involves algorithms for interpreting visual data, and many of these algorithms use calculus, particularly for understanding image gradients, optimizations, and so on.

  7. Control Systems or Robotics: These involve mathematical modeling of system dynamics, which requires differential equations—a field of study built on calculus.

  8. Signal Processing: This involves analyzing and manipulating signals, such as sound or images, and this often requires understanding of calculus and especially Fourier transforms.

  9. Scientific Computing or Numerical Analysis: These involve creating numerical solutions to mathematical problems, which often requires understanding of calculus and differential equations.

  10. Computational Geometry: This field involves the algorithmic aspects of geometry, which often requires understanding of calculus for areas like curve and surface modeling.

Note that the specific courses and their prerequisites can vary widely between different universities or programs, so it’s always best to check the specific course listings at the institution you’re interested in.

Is Calculus required for the CS1 (Introduction to CS) course?

Typically, calculus is not required for introductory computer science courses, also known as CS1 courses. These courses often focus on the basics of programming and problem-solving using a specific programming language (like Python or Java), and generally don’t involve advanced mathematical concepts.

However, requirements can vary between different universities and programs, and some programs might co-list calculus as a requirement or co-requisite alongside their CS1 course. This is often because calculus is considered part of the foundational curriculum for a degree in computer science, and students are expected to complete it early in their academic career.

Note

In general, it’s always a good idea to check the specific course listings at the institution you’re interested in to confirm their prerequisites.

Is Calculus required for introduction to computer systems course?

An Introduction to Computer Systems course typically focuses on how computers work, from the hardware level up to the interaction with the operating system and software. This can include understanding of computer architecture, memory, processors, I/O devices, and basic operating system principles.

Generally, calculus is not a prerequisite for an introductory course in computer systems. Instead, prerequisites often include an introductory programming course and possibly a course in discrete mathematics or digital logic design. Understanding computer systems usually involves more binary math, logic, and potentially some basic linear algebra, rather than calculus.

Note

However, as always, prerequisites can vary between different universities and programs. It’s best to check the specific course listings at the institution you’re interested in to confirm their requirements.

Is calculus required as a prerequisite for a first data structures course?

Generally, calculus is not required as a prerequisite for a first course in data structures. These courses typically focus on the principles and implementations of various types of data structures like arrays, linked lists, stacks, queues, trees, and graphs, and the algorithms associated with these data structures. The mathematics involved in understanding these topics is usually discrete mathematics, not calculus.

The prerequisites for a data structures course often include an introductory programming course where students learn the basics of writing, debugging, and testing code. Some universities may also require or recommend a course in discrete mathematics before or alongside the data structures course, as it provides important foundational knowledge for understanding data structures and algorithms.

Note

However, the exact prerequisites can vary between different universities and programs, so it’s always best to check the specific course listings at the institution you’re interested in to confirm their requirements.

For each of the courses you listed where Calculus is needed, in what year these courses are typically taken by CS students?

The sequence and timing of courses can vary quite a bit between different universities and programs, and can also depend on the specific preparation and pace of individual students. However, here’s a general idea of when these courses might typically be taken in a four-year undergraduate Computer Science program:

  1. Algorithms: Typically taken in the second or third year. This course often follows an introductory course in data structures.

  2. Machine Learning: Usually an upper-level course, so it might be taken in the third or fourth year. It may require prerequisites in algorithms, statistics, or linear algebra.

  3. Artificial Intelligence: Also usually an upper-level course, taken in the third or fourth year. It may require prerequisites in algorithms and possibly machine learning.

  4. Computer Graphics: This could be taken in the second, third, or fourth year, depending on the program and the student’s interests and preparation.

  5. Data Science/Big Data: These courses may be taken in the second, third, or fourth year, often requiring prerequisites in statistics and possibly algorithms or machine learning.

  6. Computer Vision: Usually an upper-level course, taken in the third or fourth year. It may require prerequisites in linear algebra, algorithms, and possibly machine learning or computer graphics.

  7. Control Systems or Robotics: Usually an upper-level course, taken in the third or fourth year. It may require prerequisites in linear algebra, algorithms, and possibly physics.

  8. Signal Processing: Usually an upper-level course, taken in the third or fourth year. It often requires prerequisites in calculus, linear algebra, and sometimes differential equations.

  9. Scientific Computing or Numerical Analysis: Usually an upper-level course, taken in the third or fourth year. It often requires prerequisites in calculus, linear algebra, and sometimes differential equations.

  10. Computational Geometry: Usually an upper-level course, taken in the third or fourth year. It often requires prerequisites in algorithms and possibly linear algebra.

Note

Again, these are just general tendencies, and the actual timing can depend on many factors. Always check the specific course listings and academic plans at the institution you’re interested in for the most accurate information.

Bloom’s Taxonomy and Learning Outcomes (by degree)

Bloom’s taxonomy is a framework used to classify educational learning objectives into levels of complexity and specificity. The levels are typically listed as:

  1. Remember (Knowledge)

  2. Understand (Comprehension)

  3. Apply (Application)

  4. Analyze (Analysis)

  5. Evaluate (Evaluation)

  6. Create (Synthesis)

Higher numbers to mean that a greater degree of mastery is required in that particular learning outcome for a degree program. However, please note that the actual levels of mastery required can vary greatly depending on the specific curriculum and course requirements of each university’s program. Here’s an illustrative mapping:

This is an initial analysis of how each learning outcome is mapped to each degree program using Bloom’s taxonomy:

Learning Outcomes Across Programs

Learning Outcomes

Computer Science

Software Engineering

Cybersecurity

Information Technology

Data Science

Bioinformatics

Problem Solving

Evaluate

Create

Evaluate

Evaluate

Create

Create

Software Design and Development

Create

Create

Apply

Evaluate

Apply

Evaluate

Algorithm and Data Structure Knowledge

Create

Evaluate

Apply

Analyze

Evaluate

Evaluate

Knowledge of Computer Systems

Evaluate

Evaluate

Evaluate

Evaluate

Analyze

Analyze

Mathematical and Theoretical Foundations

Create

Evaluate

Apply

Analyze

Evaluate

Evaluate

Critical Thinking and Ethical Considerations

Evaluate

Evaluate

Create

Evaluate

Evaluate

Evaluate

Understanding of Security Principles

Apply

Analyze

Create

Evaluate

Apply

Apply

Ability to Maintain and Manage IT Systems

Apply

Apply

Apply

Evaluate

Apply

Apply

Understanding of Network and Database Systems

Evaluate

Evaluate

Evaluate

Evaluate

Analyze

Evaluate

Understanding of Software Engineering Principles

Evaluate

Create

Apply

Evaluate

Apply

Analyze

Data Analysis and Visualization

Apply

Apply

Apply

Evaluate

Create

Evaluate

Application of Statistics and Probability

Apply

Apply

Apply

Apply

Create

Evaluate

Understanding of Machine Learning Algorithms

Apply

Apply

Apply

Apply

Create

Analyze

Understanding of Biological Concepts

Remember

Remember

Remember

Remember

Remember

Create

Understanding of Bioinformatics Techniques and Tools

Remember

Remember

Remember

Remember

Remember

Create

Note

There are concerns about the answeres for Biological Concepts and Bioinformatics. However, it should be noted that many universities require core science knowledge, so basic “recall” may be a valid mapping. -George

What about Computer Engineering and Electrical Engineering?

Who maintains standards for B.S. programs in Computer Engineering and Electrical Engineering?

The main body that maintains and enforces standards for B.S. programs in Computer Engineering and Electrical Engineering in the United States is ABET (Accreditation Board for Engineering and Technology). ABET is a non-profit and non-governmental accrediting agency for programs in applied and natural science, computing, engineering, and engineering technology.

ABET accreditation provides assurance that a college or university program meets the quality standards of the profession for which that program prepares graduates. The accreditation process requires that each program identifies specific learning outcomes and demonstrates that its students have achieved those outcomes.

For Computer Engineering and Electrical Engineering programs specifically, the IEEE (Institute of Electrical and Electronics Engineers) plays a significant role as a professional organization. While IEEE does not accredit programs, it does contribute to the setting of educational standards in these fields through its Educational Activities Board (EAB), which develops resources and provides support for educators and students.

It’s important to note that in other countries, different organizations may be responsible for maintaining standards in engineering education. For example, in the United Kingdom, the Institution of Engineering and Technology (IET) is one such organization. It’s also common for national or regional accrediting bodies to follow the principles laid out by the International Engineering Alliance’s “Washington Accord,” which outlines the outcomes expected from undergraduate engineering programs.

What are the key learning outcomes for B.S. programs in Electrical Engineering and Computer Engineering?

Here are some of the key learning outcomes that are common for B.S. programs in Electrical Engineering (EE), Computer Engineering (CE), and Computer Science (CS). Note that these outcomes can vary based on the particular focus of a program or institution.

Electrical Engineering (EE):

  1. Knowledge of Mathematics and Science: Apply knowledge of mathematics, science, and engineering.

  2. System Design/Analysis: Design and conduct experiments, analyze and interpret data, design a system, component, or process to meet desired needs.

  3. Modern Tool Usage: Use the techniques, skills, and modern engineering tools necessary for engineering practice.

  4. Problem Identification and Solutions: Identify, formulate, and solve engineering problems.

  5. Professional and Ethical Responsibility: Understand professional and ethical responsibility.

  6. Communication: Communicate effectively.

  7. Impact of Engineering Solutions: Understand the impact of engineering solutions in a global, economic, environmental, and societal context.

Computer Engineering (CE):

  1. Knowledge of Mathematics and Science: Apply knowledge of mathematics, science, and engineering.

  2. System Design/Analysis: Design and conduct experiments, analyze and interpret data, design a system, component, or process to meet desired needs.

  3. Modern Tool Usage: Use the techniques, skills, and modern engineering tools necessary for engineering practice.

  4. Problem Identification and Solutions: Identify, formulate, and solve engineering problems.

  5. Professional and Ethical Responsibility: Understand professional and ethical responsibility.

  6. Communication: Communicate effectively.

  7. Impact of Engineering Solutions: Understand the impact of engineering solutions in a global, economic, environmental, and societal context.

  8. Computer Systems: Understand computer hardware and software, design computer systems.

  9. Software Design and Development: Ability to write efficient software, understand software development methodologies.

Common outcomes with Computer Science (CS):

  1. Problem Solving: Ability to apply knowledge of computing and mathematics to solve problems.

  2. System Design/Analysis: Ability to design, implement and evaluate a computer-based system, process, component, or program to meet desired needs.

  3. Modern Tool Usage: Use current techniques, skills, and tools necessary for computing practice.

  4. Professional and Ethical Responsibility: Understand professional, ethical, legal, security and social issues and responsibilities.

  5. Communication: Ability to communicate effectively with a range of audiences.

  6. Computer Systems: Understand computer hardware and software, design computer systems (more emphasized in CE than CS).

Note

It’s worth noting that while there are many commonalities between these three fields, each has its own specific areas of focus. For example, electrical engineering places more emphasis on the design and analysis of electrical and electronic systems, while computer engineering straddles the space between electrical engineering and computer science, often focusing more on the hardware and low-level software aspects of computing. On the other hand, computer science usually places more emphasis on algorithm design, data structures, and high-level software design and development.