May 26, 2024  
2022-2023 Catalog 
    
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 200 - Computational Physics (= PHY 200)


    Instructor
    Kuchera

    (Cross-listed as PHY 200) PHY/CSC 200 is an introduction to computer programming and computational physics using Python. No prior programming experience is necessary. This course will provide students with the skills required to write code to solve physics problems in areas inclyuding quantum physics, electromagnetism, and mechanics. Structured programming methods will be covered as well as algorithms for numerical integration, solving differential equations, and more.

    Satisfies the Mathematical and Quantitative Thought requirement.

    Prerequisites & Notes
    Physics 120 or 130 at Davidson, or permission of the instructor.  (Spring)

  
  • CSC 209 - Bioinformatics Programming (= BIO 209)


    Instructor
    Heyer

    (Cross-listed as Biology 209.) An interdisciplinary introduction to computer science and structured programming using the Python programming language in the context of biological datasets and applications, including algorithms for analyzing genomic data.  

    Satisfies the Mathematical and Quantitative Thought requirement.
    Satisfies a requirement in the Data Science interdisciplinary minor.

    Prerequisites & Notes
    Does not carry Mathematics major credit. 
    Not open to students with credit for CSC 120 (=DIG 120), CSC 121 or CSC 200 (= PHY 200).  

  
  • 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 312 - Software Design


    Instructor
    Locke

    Explores the key software design concepts involved in practical software projects. Topics include software development processes, design patterns, software architecture, software testing, software performance, security, and safety.

    Satisfies a requirement in the Computer Science major and minor.

    Prerequisites & Notes
    Prerequisite: CSC 221

  
  • CSC 315 - Numerical Analysis (= MAT 315)


    Instructor
    Staff

    (Cross-listed as Mathematics 315.) Survey of methods to approximate numerical solutions of problems in root-finding, differentiation, integration, curve-fitting, differential equations, and systems of equations. Derivations, limitations, and efficiency of different algorithms are considered.

    Counts towards the Mathematics major and minor.
    Counts towards the Computer Science major and minor.

    Prerequisites & Notes
    MAT 150 and MAT 235, and proficiency in some programming language. (Spring)

  
  • 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 352 - Blockchains


    Instructor
    Mendes

    Blockchains are distributed computer systems designed to maintain a decentralized ledger, and also collectively execute & validate public computations, assuming an environment with open admittance but without mutual trust. In this course, we study the computational ideas in the design and implementation of blockchains, including public-key cryptography, data structures for state management, consensus protocols for conflict resolution, virtual machines for smart contract execution, security aspects of trustless / permissionless systems, and scalability and synchrony issues in computer networks. We also study the anatomy of popular decentralized finance applications from a software design perspective(not financial perspective). The course adopts a hands-on approach: students solve practical programming assignments during the course, and develop a final project designed jointly with the professor.

    Satisfies major and minor requirement for Computer Science

    Prerequisites & Notes
    Data Structures (CSC 221) and one of the following: Discrete Structures (CSC 220) or Sets and Proofs (MAT 230).

  
  • 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 390 - Independent Study


    Instructor
    Staff

    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. Not eligible for major credit in Computer Science.

  
  • 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.

  
  • CSC 392 - Independent Study - Systems


    Instructor
    Mendes

    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 a Systems elective.

  
  • CSC 393 - Independent Study - Theory


    Instructor
    Staff

    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 a Theory elective.

  
  • CSC 394 - Independent Study - Other


    Instructor
    Staff

    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.

  
  • CSC 481 - Seminar


    Instructor
    Staff

    Study of topics of interest in Computer Science.

    Eligible for minor credit in computer science or major credit in mathematics by departmental approval.

    Prerequisites & Notes
    Permission of the instructor. 

  
  • CSC 491 - Independent Study - Applications


    Instructor
    Chartier

    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.

  
  • CSC 492 - Independent Study - Systems


    Instructor
    Staff

    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 a Systems elective.

  
  • CSC 493 - Independent Study - Theory


    Instructor
    Staff

    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 a Theory elective.

  
  • CSC 494 - Independent Study - Other


    Instructor
    Staff

    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.


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.