|
2022-2023 Catalog [ARCHIVED CATALOG]
Course Descriptions
|
|
|
Computer Science |
|
-
CSC 108 - Explorations in Computer Science Instructor
Ramanujan
An introduction to the study of computational and algorithmic processes and the insight such study provides into age-old questions about human creativity and intelligence, the nature of social networks, evolution and self-replicating systems, mind-body duality, language, and economic systems. Students will learn to read and understand short computer programs in a beginner-friendly language.
Satisfies Mathematical and Quantitative Thought requirement.
Prerequisites & Notes This course is not open to students with prior credit for (or concurrently enrolled in) any computer science course (including PHYS 200 and BIO 209) or any one of MAT 220, MAT 230 or MAT 255. No previous experience with computing is needed or assumed.
|
|
-
CSC 109 - Data Science and Society Instructor
Toporikova
Data plays a central and important role in scholarship, in research, and in modern society. Nearly every web search, phone call, transaction, and countless other activities are tracked, analyzed, and used to predict future actions. Data science is a collection of analytical and computational methods to enable insight, understanding, and predictions to be drawn from data. This course provides an introduction to the methods of data science, including visualization, manipulation, programming, and modeling. This class will give you the inspiration and confidence to apply the tools and methods of data science in numerous ways! Throughout the term, we will combine theory and application of data science tools and methods that are useful for studying problems in the social sciences, environmental science, psychology, medicine, ecology, chemistry, physics, and much more. Course is offered online through LACOL and is limited to 10 Davidson students. Students must indicate interest (include link when ready) to be considered.
Satisfies the Mathematical and Quantitative Thought requirement
Satisfies an interdisciplinary minor requirement in Data Science
Prerequisites & Notes A student may not receive credit for both CSC 109 and CSC 110.
|
|
-
CSC 110 - Data Science and Society Instructor
Staff
An introduction to methods of data science, including computer programming, data visualization, and statistical analysis. Students will collect, process, analyze, and present data in order to expose and help each other understand issues of social and economic justice. All work will be done in R, a freely available data analysis software package.
Satisfies a Mathematical and Quantitative Thought requirement.
Satisfies an elective requirement in the Data Science interdisciplinary minor (optional introductory course to the minor).
Satisfies the Justice, Equality, and Community requirement.
|
|
-
CSC 120 - Programming in Humanities (= DIG 120) Instructor
Kabala
Computational methods have significantly broadened and deepened the possibilities of inquiry in the Humanities. Programming skills have allowed textual scholars, in particular, to take advantage of enormous digitized corpora of historical documents, newspapers, novels, books, and social network data like Twitter feeds to pose new questions to the written word. We can now trace the changing semantics of words and phrases across millions of documents and hundreds of years, visualize centuries-old plot structures in new ways through sentiment analysis and character networks, and solve long-standing riddles of authorship attribution-among many other exciting feats. This course offers an introduction to computer science through applications in the Humanities. Students will learn to program in the Wolfram Language, aka Mathematica. The Wolfram Language is especially well suited for humanists: its rich documentation and natural language processing capabilities ensure a gentle introduction for first-time programmers, its symbolic computation structure allows us to work with texts written in any language and any alphabet, while its Notebook environment provides an interactive medium for publishing and sharing our results with peers. Mathematica also provides a great springboard for further work in computer science, physical computing, and Digital Studies more broadly.
Satisfies a minor requirement in Computer Science.
Satisfies a requirement in the Data Science interdisciplinary minor.
Satisfies the Mathematical and Quantitative Thought requirement.
Prerequisites & Notes Not open to students with credit for CSC 121, CSC 200 (= PHY 200), or CSC 209 (= BIO 209).
(Spring)
|
|
-
CSC 121 - Programming and Problem Solving Instructor
C. Nemitz, T. Peck, R. Ramanujan, Seminario, Shook
An introduction to computer science and structured programming, including algorithmic thinking, using control structures, essential data structures, creating functions, recursion, and object-oriented programming.
Satisfies the Mathematical and Quantitative Thought requirement.
Satisfies a requirement in the Data Science interdisciplinary minor.
Satisfies Digital Studies major and minor requirement.
Prerequisites & Notes Not open to students with credit for CSC 120 (= DIG 120), CSC 200 (=PHY 200), or CSC 209 (= BIO 209).
|
|
-
CSC 171 - Applied Machine Learning Instructor
Byers
A survey of the field of machine learning, with an applied introduction to the fundamental algorithms in the field. Topics include techniques for regression, classification, ensemble methods, and dimensionality reduction.
Satisfies Data Science minor requirement.
Satisfies Math and Quantitative Thought requirement.
|
|
|
|
|
|
-
CSC 210 - Mathematical Modeling (=MAT 210) Instructor
Chartier
A survey of discrete mathematical and computational modeling techniques and their application to the natural and social sciences. Mathematical tools are selected from such topics as Monte Carlo simulation, queuing theory, Markov chains, optimization, discrete dynamical systems, computational geometry, agent-based modeling, and cellular automata. Emphasis is on formulating models, investigating them analytically and computationally, and communicating the results.
Counts as an elective in the Mathematics major.
Counts as an Applications elective in the Computer Science major.
Counts as an elective in the Data Science interdisciplinary minor.
Satisfies the Mathematical and Quantitative Thought requirement.
Prerequisites & Notes MAT 140 or MAT 150, and one of CSC 120, CSC 121, CSC 200, or CSC 209.
|
|
-
CSC 220 - Discrete Structures (= MAT 220) Instructor
H. Smith
(Cross-listed as MAT 220)
An introduction to proof techniques and discrete mathematics, with a focus on topics relevant to computer science, and an introduction to functional programming. Topics include logic, sets, functions, equivalence relations, algorithm analysis, methods of proof, essential combinatorics, recurrence relations, and discrete probability, as well as the essentials of functional programming. Additional topics may be selected from graph theory, number theory, or automata theory. This course prepares students for advanced work in both computer science and mathematics.
Satisfies the Mathematical and Quantitative Thought requirement.
Counts towards the Mathematics major and minor.
Counts towards the Computer Science major and minor.
Prerequisites & Notes MAT 140, MAT 150, or MAT 160, and the ability to program in a high-level language such as Python, C++, or Java at the level expected in CSC 121 or an equivalent course.
|
|
-
CSC 221 - Data Structures Instructor
Cameron, H. Mendes, Pulaj, Nemitz
A study of abstract data types, including lists, stacks, queues, and search tables, and their supporting data structures, including arrays, linked lists, binary search trees, and hash tables. Implications of the choice of data structure on the efficiency of the implementation of an algorithm. Efficient methods of sorting and searching.
Counts towards the Mathematics major and minor.
Counts towards the Computer Science major and minor.
Counts as an elective in the Data Science interdisciplinary minor.
Satisfies the Mathematical and Quantitative Thought requirement.
Prerequisites & Notes Computer Science 121, 200, 209, or permission of instructor.
|
|
-
CSC 250 - Computer Organization Instructor
Ramanujan
An introduction to how digital computers are built and the process by which computer programs expressed in a high-level language are translated into signals to be routed on a digital circuit board. Topics include data representation and manipulation, digital logic building blocks (logic gates, flip-flops), computer memory, assembly and machine code, hardware components and their organization, and the C programming language.
Prerequisites & Notes Requires the ability to program in a high-level language such as Python, C++, Java etc., at the level expected in CSC 121 or an equivalent course.
Does not carry Mathematics major credit.
|
|
|
|
|
|
-
CSC 321 - Analysis of Algorithms Instructor
Pulaj
Algorithm design strategies, including greedy, divide-and-conquer, and dynamic programming methods. Advanced data structures, including balanced search trees, graphs, heaps, and priority queues. Advanced methods of searching and sorting. Computational complexity and analysis of algorithms. NP-complete problems.
Counts towards the Mathematics major and minor.
Counts towards the Computer Science major and minor.
Prerequisites & Notes CSC 221 and CSC/MAT 220, or permission of instructor.
|
|
-
CSC 322 - Programming Languages Instructor
Pulaj
Principles of programming languages, including lexical and syntactic analysis, semantics, types, functions and parameters, and memory management. Programming paradigms, drawn from imperative, object-oriented, functional, and logical programming languages.
Prerequisites & Notes Computer Science 221.
|
|
-
CSC 324 - Theory of Computation Instructor
R. Ramanujan
Mathematical models of computation, and the fundamental capabilities and limitations of computers. Topics include regular languages, finite automata, context-free languages, grammars, Turing machines, the Chomsky hierarchy, the halting problem, algorithms, decidable and undecidable problems, algorithmic reductions, complexity theory, the classes P, NP, and PSPACE, and NP-complete problems.
Counts towards the Mathematics major and minor.
Counts towards the Computer Science major and minor.
Prerequisites & Notes One of Mathematics 220, 230, or 255. (Offered Spring of odd-numbered years.)
|
|
-
CSC 351 - Operating Systems Instructor
Mendes
Operating Systems are collections of software services that manage physical hardware resources, from small sensors to complex servers, and provide applications with a higher-level interface for common tasks. Typical responsibilities of operating systems include task and memory management; input and output abstractions and services (which includes file systems and networking); and authentication / authorization. For workstations and servers, operating systems also commonly include the means to define and enforce security policies, to perform virtualization, and to manage energy consumption, among others. In our course, students develop in practice the crucial parts of a modern operating system, and develop scientific writing and public presentation skills in an informal and rewarding class environment.
Satisfies a 300-level elective requirement in the Systems area of the Computer Science major.
Satisfies a 300-level elective requirement in the Computer Science minor.
Prerequisites & Notes CSC 221 (Data Structures), CSC 250 (Computer Organization), and the ability to program in C.
Offered Fall of even-numbered years.
|
|
|
|
-
CSC 353 - Database Systems Instructor
Mendes
Sciences and societies are increasingly reliant on storing, querying, and processing data. Major scientific endeavors and applications rely on our ability to manage - and interpret - large data sets. In addition, our ability to generate data increases quickly as computational devices become less expensive and more ubiquitous. In this upper-level Computer Science course, we study key algorithmic and structural strategies used in database management systems, including indexing techniques, concurrency control protocols, and parallelism.
Satisfies a requirement in the Computer Science major and minor.
Counts as an elective in the Data Science interdisciplinary minor.
Prerequisites & Notes CSC 221 (Data Structures)
|
|
-
CSC 357 - Concurrent and Parallel Computing Instructor
Mendes
Core concepts, problems, and techniques related to the construction and maintenance of highly-scalable concurrent and parallel systems, including how computer and network architecture influence performance. Both theoretical and practical perspectives are considered as tools to analyze modern systems.
Satisfies a minor requirement in Computer Science.
Prerequisites & Notes Prerequisite: CSC 221
|
|
-
CSC 358 - Real-Time Systems Instructor
Nemitz
This introduction to real-time systems begins with grouping such systems under several fundamental classifications. We will develop a model to reason about real-time systems and cover a sampling of scheduling algorithms for uniprocessor systems. We will apply a set of tests to determine whether a given scheduling algorithm guarantees that timing requirements will be met. We will also cover resource access protocols, multiprocessor scheduling, and recent research topics. This course builds on the reasoning skills developed in CSC 220 and the knowledge of basic computer architecture covered in CSC 250.
Satisfies Computer Science major and minor requirement.
Prerequisites & Notes Prerequisites: CSC 220 and CSC 250.
|
|
-
CSC 359 - Networks and Distributed Systems Instructor
Mendes
Computer networks have revolutionized the way societies create and communicate information. In particular, the Internet is a massive deployment of network algorithms and systems, with lasting social, scientific, and economical impact. Network algorithms and systems are specified by protocols, which allow different organizations to interoperate. Protocols are designed to handle network failures and non-cooperative agents, and to operate at large scale without critical performance issues. Algorithms and systems associated with network protocols are elegant and significant applications of fundamental Computer Science ideas. This course studies fundamental Internet protocols such as ARP, IP, ICM, and TCP; higher-level application protocols, such as DNS, HTTP, SMTP, and security-related protocols; as well as medium access control specifications for Ethernet and wireless networks. All of these protocols are studied from a perspective that emphasizes their algorithmic and design-related aspects, with focus on the fundamental computer science principles underlying the associated algorithms and systems.
Fulfills the Systems area requirement of the Computer Science major.
Satisfies a requirement in the Computer Science minor.
Prerequisites & Notes CSC 221 (Data Structures) and CSC 250 (Computer Organization)
|
|
-
CSC 361 - Computer Graphics Instructor
Peck
Overview of 2D and 3D computer graphics techniques: line drawing routines, antialiasing, 3D object representation, culling, z-buffers, a-buffers, illumination and shading models, ray tracing, color models, the graphics pipeline, levels of detail, and image processing. Emphasis on understanding and implementing computer graphics algorithms and creating computer generated images using OpenGL and C++.
Counts towards the Computer Science major and minor.
Prerequisites & Notes MAT 140 or MAT 150 and CSC 221
|
|
-
CSC 362 - Data Visualization Instructor
Peck
An introduction to the theory and application of graphical representations of data. Topics include: the human visual system, low-level vision processing, attentive vs. preattentive processes, color vision and color map design, interaction, space perception, and visualization design.
Counts as an elective in the Data Science interdisciplinary minor.
Prerequisites & Notes Prerequisite: CSC 221. Offered fall of odd-numbered years.
Does not carry Mathematics major credit.
|
|
-
CSC 364 - Computational Geometry (=MAT 364) Instructor
Heyer
Computational geometry bridges mathematics and computer science, combining algorithmic thinking and combinatorial reasoning to finite collections of points, lines, triangles, and other geometric objects. We will discuss The Art Gallery problem, convex hulls, triangulations, Voronoi diagrams, and applications such as computer graphics, animation, geographic information systems, 3-D printing, robotics, and graph drawing.
Prerequisites & Notes Prerequisites: CSC/MAT 220, or MAT 230 plus proficiency in a high-level programming language.
|
|
-
CSC 370 - Machine Reasoning Instructor
Ramanujan
A survey of core algorithms and techniques from the field of machine reasoning and decision-making. Topics include search, game playing, constraint satisfaction problems, planning, reinforcement learning, knowledge representation, and logic.
Counts towards the Mathematics major and minor.
Counts towards the Computer Science major and minor.
Prerequisites & Notes CSC 221 and one of CSC/MAT 220, MAT 230, or MAT 255; or permission of the instructor.
|
|
-
CSC 371 - Machine Learning Instructor
M. Kuchera
A survey of the field of machine learning, with an introduction to the fundamental algorithms in the field and the theory underpinning them. Topics include techniques for regression, classification, ensemble methods, and dimensionality reduction.
Counts towards the Mathematics major and minor.
Counts towards the Computer Science major and minor.
Counts as an elective in the Data Science interdisciplinary minor.
Prerequisites & Notes Proficiency in a high-level programming language and data structures, at the level expected in CSC 221, and MAT/CSC 220 (or permission of the instructor).
Offered Spring of even-numbered years.
|
|
-
CSC 379 - Cryptology Instructor
Zhuang
The study of making and breaking secret codes, including classical ciphers and their cryptanalysis, modern symmetric ciphers, and public-key systems, and their application in cryptographic protocols for secrecy, key exchange, information assurance, and authentication. Analysis of the security of cryptosystems using tools from mathematics and computer science.
Fulfills an elective requirement in the Applications area of the Computer Science major.
Counts as an elective in the Computer Science minor.
Counts as an elective in the Mathematics major and minor.
Counts as an elective in the Social Science track of the Applied Mathemetics interdisciplinary minor.
Prerequisites & Notes Math 150 (Linear Algebra), and an introductory proof course (one of CSC 220 Discrete Structures, MAT 230 Sets and Proofs, or MAT 255 Number Theory).
|
|
-
CSC 381 - Seminar: Rotating Topics
Deep Learning
Instructor
C. Seminario, Wiedenbeck
This course focuses on theoretical foundations and practical applications of deep learning, the subfield of machine learning concerned with large neural networks trained on large data sets. Topics include training models by stochastic gradient descent, implementing various neural network architectures, and choosing network hyperparameters. Application areas include classification, regression, and reinforcement learning problems. Students will implement their own neural networks from scratch and get experience using state-of-the-art deep learning libraries.
Prerequisites:
* CSC 221
* MAT 140 or MAT 150 or MAT 160
Recommender Systems
Instructor
Seminario
The ubiquitous “.. people who viewed this item also viewed these items .. ” recommendations found in online shopping applications are driven by underlying Recommender Systems. Started in the 1990’s, these systems have evolved from relatively simple news recommenders to today’s sophisticated recommender systems used by Amazon and Pandora. This course begins with an overview of the motivation for recommenders and the fundamental recommender methodologies: collaborative filtering, content-based, and hybrid. Then, we will do a deeper dive into the popular collaborative filtering (CF) algorithms: user-based, item-based, and matrix factorization. We will use Python programming and research datasets containing movie ratings to explore how these CF algorithms produce recommendations. Finally, we will learn how to evaluate recommender results with established research metrics and protocols as well as propose and evaluate custom modifications to recommender algorithms.
Satisfies Applications elective in the Computer Science major and minor.
Counts an an elective in the Data Science inerdisciplinary minor.
Prerequisites & Notes Prerequisites:
CSC 221, MAT 150, and the ability to program in a high-level language such as Python, Java, or C++ at the level expected in CSC 221.
|
|
-
CSC 382 - Intro to Information Security Instructor
Miazi
This is an upper-level course that falls under the systems category. In this course, the students will learn about the basic concepts, principles, and fundamentals of Information Security and learn hands-on approaches to secure computers and networks.
The main topics would include:
- Networking Basics
- Security basics
- Software security
- Operating Systems security
- Data and Information security
- Cryptography applications and protocols
- Authentication approaches
- Network threats and vulnerabilities
- Web security
- Mobile security
- Ethical hacking and legal issues
- Privacy
Counts as an elective in the Systems category of the Computer Science major.
Prerequisites & Notes Permission of instructor required.
- A student took a course on Computer Organization (CSC250), otherwise familiar with the basic concepts of Operating Systems.
- Prior programming experience with Java or C (e.g., taken CSC221: Data Structures).
- Taken MAT 140, 150, or 160 and Discrete Mathematics courses.
|
|
-
CSC 383 - Seminar: Algorithmic Game Theory Instructor
Wiedenbeck
Game theory studies interactions among multiple agents and uses mathematical modeling of incentives to predict how rational decision-makers will behave. This course focuses on computational aspects of game theory, including model construction, equilibrium computation, and mechanism design. Techniques used include algorithm design, complexity analysis, and data structures.
Satisfies Mathematics major and minor requirement
Satisfies Computer Science major and minor requirement
Prerequisites & Notes Prerequisites & Notes
CSC 221 and CSC/MAT 220, or permission of instructor required
|
|
|
|
-
CSC 391 - Independent Study - Applications Instructor
Kuchera M., Ramanujan R., Wiedenbeck
Independent study under the direction and supervision of a faculty member who reviews and approves the topic(s) of the independent study and who determines the basis for the evaluation of students’ work.
Prerequisites & Notes Open to qualified students with the permission of the department chair. Eligible for major credit in Computer Science as an Applications elective.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mathematics |
|
-
CSC 385 - Linear and Discrete Optimization
Instructor
Pulaj
This course will serve as an introduction to the theory of linear and discrete optimization, which underlies algorithmic methods with connections to both pure and applied mathematics. We will learn fundamental techniques that solve linear programs and discrete optimization problems in a mathematically rigorous way. The focus of the course will be the interplay between geometry, linear algebra and the resulting duality theory and simplex method. Within this framework, we will learn how to prove that an algorithmic solution to a problem of interest is optimal.
Satisfies Theory elective within Computer Science major and minor.
Satisfies Mathematics major and minor requirement.
Prerequisites & Notes Prerequisites & Notes
Math 150, one of CSC 120, CSC 121, CSC 200, or CSC 209, and one of CSC/MAT 220, MAT 230, or MAT 255.
|
|
|
|