# Yeshiva College Syllabi -- 2021 - 2022 courses (past versions for reference ONLY) -- COMP SCI (Computer Science)

Permanent URI for this collectionhttps://hdl.handle.net/20.500.12202/6996

*Syllabi are provided for general information about course scope and content. Syllabi are subject to change*## Browse

### Recent Submissions

Item Restricted COM2545: Algorithms(Yeshiva College, Yeshiva University, 2022-08) Leff, AvrahamCOM 2545 - Algorithms Sorts (insertion sort, merge sort, heap sort and quicksort); growth of functions and recurrences; hash tables; binary search trees and red-black trees; Huffman codes; graph algorithms including minimum spanning trees and shortest path problems; cryptography, string matching and computational geometry. (lecture: 3 hours; lab: 2 hours). Prerequisites: COM 1320, COM 1504, MAT 1412 3.000 TO 4.000 Credit hoursItem Restricted COM 2113: Computer Organization and Assembly Language(Yeshiva College, Yeshiva University, 2022-08) Wymore, BenDescription COM2113 helps you become a better programmer through understanding the basic concepts underlying all computer hardware systems. You need to know what really happens when your programs run, so that when things go wrong (as they always do) you have the intellectual tools to solve the problem. Higher-level programming languages are based on convenient abstractions that can break down when executed on actual computer hardware. These breakdowns include: finite arithmetic, memory access violations, asynchronous signals, and mismatches between data structures and the physical memory hierarchy. By the end of the course, students will understand these realities in considerable detail and be able to apply them to improving the code they write.¶ Course Outcomes Students will write low-level programs to manipulate the representations of integers and floatingpoint numbers in the C language. Students understand and debug (unoptimized) assembly language code produced by current C compilers Students will be able to predict and simulate the effects of cache memories on running programs for both hypothetical and actual computer hardware Students will understand how Linux programs process asynchronous signals, and how to write signalsafe code. Students will understand how virtual memory affects program performance on X86_64 processors Students will analyze the efficiency of various dynamic memory allocation schemes. Students will be able to apply advanced code optimizations to matrix algorithms. Students will understand how computer architecture gives rise to security flaws¶ Major Topics Covered in Course Introduction to the C programming language and Linux command line (first 2 weeks) Finite binary representations of integers and real numbers, both scalars and vectors. X86_64 assembly language In-memory layout of executing C and assembler programs. Memory hierarchies and the importance of temporal and spatial locality. Signaling asynchronous events; blocking and delaying signals Issues in implementing I/O correctly Principles of low-level code optimization Dynamic memory allocation schemes.Item Restricted COM4010: Machine Learning Applied(Yeshiva College, Yeshiva University, 2022-08) Feltenberger, David; 0000-0001-8784-9063COM 4010 - Machine Learning Applied Data Science lies at the intersection of mathematical modeling, software engineering, Artificial Intelligence, and data management. This course is designed to provide a hands-on end-to-end perspective on data science, i.e., all the components that go in to building and deploying high quality data science solutions. 3.000 Credit hoursItem Restricted COM3563: Database Implementation(Yeshiva College, Yeshiva University, 2022-08) Leff, AvrahamGoals of DBMS, including data independence, relationships, logical and physical organization, schema and subschema; hierarchical, network, and relational modes; examples of implementation of various models; first, second, and third normal forms of data relations; canonical schema; data description languages: forms, applications, examples, design strategies; query facilities: relational algebra, calculus, data structures for establishing relations; query functions; file organization; index organization; file security; data integrity and reliability. . 3.000 Credit hoursItem Restricted COM 3571: Data Visualization(2019-01) Medina, Francis PatriciaVisual representations and tools are widely used in science, business, and government to extract, and effectively share, insights derived from large, dynamic data sets. This use is driven by two realities. First, the explosive growth in the amount of data that is created, gathered, and retained means that the data sets relevant to any given question or decision are too large for a human being to process one data point at a time. As such, effective visual representations that are “worth a thousand words” and concisely communicate the information latent in the data are essential. Second, an organization’s investment in data science, which uses mathematical techniques to derive insight from data, can only pay off if the insight can be clearly communicated to decision makers who are not scientists. Visualization is therefore an increasingly critical skill for a data scientist. Data visualization utilizes a set of techniques and algorithms to programmatically transform data into (interactive) graphical representations that effectively tell a story and guide decisions (i.e. explain), or that facilitate interactive analysis (i.e. explore). In this course, students will learn the algorithmic and artistic techniques needed to design and develop effective explanatory and exploratory data visualizations. ___ Students will be able to use visualization tools and techniques to explore data Students will be able to both choose and design visualizations that will accurately and effectively convey information Students will be able to write programs to create both static and interactive visualizations Students will know where to look for current innovations in visualization and thus will be able to stay up to date with the latest visualization approaches ___ Visual design and aesthetics Perception and visual encoding Algorithms for creation of static and interactive visualizations Visual design patterns to support specific analyses, including: time series, comparisons, dependencies/interactions, deviations, multivariate, and spatial Applications of explanatory and exploratory visualization Overview of important visualization tools Spotlights on the work and contributions of highly impactful visualization researchers and practitionersItem Restricted COM 3590: Data Cleaning & Transformation(2021-01) Medina, Francis PatriciaDescription In real-world situations, data scientists must be able to use data from many dirty, autonomous, and heterogeneous data sources that are far from being ready to be analyzed. Preparing the data for analysis (often referred to as “data wrangling”) involves four different tasks: cleaning, sampling, transformation, and integration. Cleaning is the detection and removal of noise, i.e., dirty data, from a data set. Speaking very broadly, an instance is considered “dirty” if it is, in some way, inaccurate or duplicate. Sampling is drawing a representative subset of the population of interest from the data set. Sampling may be used either to reduce the data set to a tractable size or to isolate the population of interest from the remainder of the data. Transformation involves taking an existing data set and mapping it from its existing schema to the schema required for the desired analysis. May include restructuring the schema and/or enriching it with additional data from other sources. Integration is the process of combining two or more sets of data into a consistent, unified view. The data to be integrated often is stored in multiple data sources which differ in their storage formats, query languages, schema/metadata languages, and provenance. Integration occurs at both the schema and instance levels, and includes entity resolution, which is the detection of when multiple data instances refer to the same real-world entity. For each of these tasks, interactive tools are useful both for preparing small data sets as well as for investigating the general quality or structure of a large data set. When dealing with large data sets measuring in many thousands or millions of rows, however, programmatic quantitative approaches are an absolute necessity to make data preparation a realistic task. This course covers both interactive tools and quantitative approaches to each of these tasks. Because data preparation is a focus of significant R&D and small advances may have major impacts on one’s productivity, the course also introduces students to the communities of research and practice that continue to advance the state of the art enabling students to stay abreast of valuable advances in this area. Course Outcomes Students will be able to apply descriptive statistics to explore a data set Students will be able to use data visualization tools to understand and explain the characteristics of a data set Students will be able to write programs to clean data sets Students will be able to use transformation, integration, and sampling to derive new data sets, that are ready for analysis, from existing data setsItem Restricted COm 1310: Mathematics for Computer Science(2021-01) Kelly, VanDescription The course will introduce students to a variety of topics in discrete mathematics that are essential for a Computer Science career. It emphasizes mathematical definitions and proofs as well as applicable methods. Topics include formal logic notation, proof methods; induction, well-ordering; sets, relations; elementary graph theory; asymptotic notation and growth of functions; permutations and combinations, and counting principles. The Python programming language will be introduced during the first few weeks and assignments will require programming in Python. Course Outcomes Students will: acquire a familiarity with the Python language and will use various Python software packages to solve problems in discrete mathematics. be able to understand mathematical reasoning in order to read, comprehend, and construct mathematical arguments understand the relationship between mathematical reasoning and the logical operations of Python. be able to construct logically correct proofs, especially those based on induction and well ordering. understand how inductive arguments are mirrored in recursive designs for computer programs. understand how sets, relations, and graphs are used for modeling in Computer Science and how Python data structures to represent them. be able to perform combinatorial analysis to estimate complexity analyze the time and space complexity of simple algorithms using asymptotic analysis techniques.Item Restricted COM 3930: Text Analysis and Natural Language Processing(2021-01) Rosenfeld, AviDescription Vast amounts of information is created in the form of unstructured data – web pages, social media posts, emails, presentations, analysts’ reports, news content, etc. The ability to extract useful information from such data sources is a critical tool in the toolbox of a data scientist. This course examines computational methods for analyzing human language textual data in order to detect meaning and extract information. Applications of these methods include sentiment analysis, information retrieval, and trend prediction. Course Outcomes Students will be able to articulate the fundamentals of natural language processing Students will be able to competently use several major software packages for NLP Students will be able to apply machine learning for text analysis Students will be able to implement Information Retrieval Algorithms Students will be able to implement and use Word Embedding algorithms such as Word2Vec Major Topics Covered in Course What is natural language processing and the challenge of doing it computationally Major tasks that NLP undertakes Uses and limitations of n-gram analysis Using NLP and syntactical analysis for text mining Understanding and implementing search engines Using and implementing modern word embedding techniques such as Word2VecItem Restricted COM 3920: Machine Learning(2021-01) Dutton, RichardDescription Machine learning's goal is to develop applications whose accuracy in predicting the value of unknown data improves by examining more and more known data. This course introduces the main principles, algorithms, and applications of machine learning, as well as important open source libraries and cloud-based machine learning services that practitioners are using to build real systems. Course Outcomes ● Students are able to implement and analyze ML algorithms ● Students are able to describe the formal properties of models and algorithms for ML and explain the practical implications of those results ● Students are able to select and apply the most appropriate ML method to solve a given learning problem Major Topics Covered in Course ● Overview of Machine Learning (ML) ● Logistic Regression, Softmax ● Neural Networks, Convolutional Neural Networks ● Decision Trees and Ensembles ● NLP ● Reinforcement Learning ● Unsupervised LearningItem Restricted COM 3610: Introduction to Operating Systems(2021-01) Wymore, BenjaminDescription An introduction to operating system design and implementation. The operating system provides a well-known, convenient, and efficient interface between user programs and the bare hardware of the computer on which they run. The operating system is responsible for allowing resources (e.g., disks, networks, and processors) to be shared, providing common services needed by many different programs (e.g., file service, the ability to start or stop processes, and access to the printer), and protecting individual programs from one another. This course emphasizes the tradeoffs that can be made between performance and functionality during the design and implementation of an operating system. Particular emphasis will be given to four major OS subsystems: process management (processes, threads, CPU scheduling, synchronization, and deadlock), memory management (segmentation, paging, swapping), file systems, and operating system support for distributed systems. Course Outcomes • Students understand the history, necessity, and major functions of operating systems • Students are able to write system level software that uses or replicates (as appropriate) common features of modern operating systems • Students are able to write and debug properly synchronized multi-threaded code at both the process and thread levels in Linux, preventing both deadlock and starvation • Students can create, configure, and manage virtual machines using a hypervisor • Students understand, and can configure and use, the security-related features of modern operating systems Major Topics Covered in Course • Operating System structure • Processes, threads, kernel space, and user space • Deadlock, livelock, starvation, and fairness • Memory management • File systems • Virtualization • Multiprocessors • Operating systems security principlesItem Restricted COM 1320 : Data Structures(2021-01) Wymore, BenjaminDescription Data Structures are logical constructs that facilitate organizing and accessing data efficiently. They are also the “raw materials” on which algorithms run. Choosing the right data structures will make or break any non-trivial program because, together with the choice of algorithms, they dictate what a program can do in a reasonable amount of time. Software engineers must build complete, and efficient, programs that solve non-trivial problems. This requires making correct use of data structures. Course Outcomes • Students will be able to explain the characteristics, strengths, and weaknesses, of the most common data structures, and when to use them • Students will be able to choose the right data structure(s) to use in order to meet or exceed a program’s requirements • Students will be able to implement programs that solve real-world problems making appropriate use of data structures • Students will be able to independently learn about additional data structures • Students will be able to articulate how data structures affect a program’s performance • Students will be able to articulate the relationship between data structures and algorithms Major Topics Covered in Course • Introduction to growth rates, a.k.a. asymptotic analysis, as it pertains to the performance implications of choice of data structures • Core data structure building blocks: arrays, lists, and recursion • Basic data structures: hash tables, stacks, queues, dictionaries, trees (binary, 2-3, red-black, BTree, Tries, Heaps) • Using all the above in various applications • Software engineering tools and methodsItem Restricted COM 1320 : Data Structures(2021-01) Diament, Judah M.Description Data Structures are logical constructs that facilitate organizing and accessing data efficiently. They are also the “raw materials” on which algorithms run. Choosing the right data structures will make or break any non-trivial program because, together with the choice of algorithms, they dictate what a program can do in a reasonable amount of time. Software engineers must build complete, and efficient, programs that solve non-trivial problems. This requires making correct use of data structures. Course Outcomes Students will be able to explain the characteristics, strengths, and weaknesses, of the most common data structures, and when to use them Students will be able to choose the right data structure(s) to use in order to meet or exceed a program’s requirements Students will be able to implement programs that solve real-world problems making appropriate use of data structures Students will be able to independently learn about additional data structures Students will be able to articulate how data structures affect a program’s performance Students will be able to articulate the relationship between data structures and algorithms Major Topics Covered in Course Introduction to growth rates, a.k.a. asymptotic analysis, as it pertains to the performance implications of choice of data structures Core data structure building blocks: arrays, lists, and recursion Basic data structures: hash tables, stacks, queues, dictionaries, trees (binary, 2-3, red-black, BTree, Tries, Heaps) Using all the above in various applications Software engineering tools and methodsItem Restricted COM 4580H : Cybersecurity(2021-01) Kelly, VanCourse Objectives This course gives an in-depth survey of the ever-changing front lines of the battle to secure computer-based information, along with a chance to experiment with offensive and defensive security techniques in a laboratory situation. This course includes both in-person and online components. Specific Objectives Cybersecurity is a competitive game for high stakes waged between offensive and defensive forces. Neither offense nor defense can claim a high moral ground – it all depends on who is paying the bills and for what effect. The goal of this course is help students understand how various attacks work, what their fundamental causes are, how to defend against them, and how various defense mechanisms work. Based on such understanding, students will be prepared to evaluate the risks faced by computer and network systems, detect common vulnerabilities in software, use proper methods to protect systems and networks, and design and implement software systems and applications that are (more) secure against attacks.Item Restricted COM 3910: Mathematical Foundations of Machine Learning(2020-09) Medina, Francis PatriciaData science primarily focuses on identifying patterns and information in existing data, and predicting future data values. To become a highly skilled data scientist one must understand, and know how to properly apply, probability and statistics. Computer scientists, even those who do not study or make use of machine learning or other aspects of C.S. that make heavy use of probabilistic approaches, must have a core understanding of the mathematics behind data science since they are often called upon to take the work of a data scientist and adapt it to run reliably and consistently at a large scale. In order to fully understand Machine Learning, one must have a thorough grounding in calculus, linear algebra, probability and statistics, as well as the ability to program solutions to statistical problems. This course provides the aforementioned foundations.Item Restricted COM 3820: Parallel Programming(2020) Leff, AvrahamThis course will examine basic choices and tradeoffs made in parallel systems, with a strong focus on concurrent programming and parallel algorithm design.Item Restricted COM3800: Intro to Distributed Systems(2019-09) Diament, Judah M.Distributed systems enable the aggregation of many networked computers to construct highly available and scalable services. This course will introduce the core challenges of, and approaches to, building distributed systems. Aspects of cloud computing will be examined in some depth.Item Restricted COM 3760: Artificial Intelligence(2020-09) Rosenfeld, AviThe course situates the study of Artificial Intelligence (AI) first in the broader context of popular culture, Philosophy of Mind, and Cognitive Psychology and then treats in-depth methods for automated reasoning, automatic problem solvers and planners, knowledge representation mechanisms, game playing, machine learning, and statistical pattern recognition. The class is a recommended for all scientists and engineers with a genuine curiosity about the fundamental obstacles to getting machines to perform tasks such as deduction, learning, and planning and navigation. Strong programming skills and a good grasp of the English language are expected; students will be asked to complete both programming assignments and writing assignments.Item Restricted COM2545: Introduction to Algorithm(2020-09) Leff, AvrahamItem Restricted COM 2512: Computer Networks(2020-09) Kelly, VanPrerequisite COM 2113 Computer Organization and Assembly Language; Description COM 2512 covers the operation of computer networks in top-down fashion, starting with the application level and proceeding down the Internet protocol stack to the link and physical levels. In this way, it starts with the most familiar software-centric levels and gradually introduces the distinctive lower-level programs that typify network software. The focus of this course is specifically on the protocols that drive the Internet, with less emphasis on other protocol families, such as OSI. Major Topics Covered in Course • History of networking; protocol stacks before the Internet • The most common Application Level protocols and APIs • Connection-oriented and connectionless transport • The two “planes” of the routed Internet (control and data) • The wide varieties of link-level technology (Ethernet, WiFi, etc.) • Wireless and Mobile networks, including high mobility • Multimedia and other real-time streamingItem Restricted COM 2113: Computer Organization and Assembly Language(2020-09) Wymore, BenjaminDescription COM2113 helps you become a better programmer through understanding the basic concepts underlying all computer hardware systems. You need to know what really happens when your programs run, so that when things go wrong (as they always do) you have the intellectual tools to solve the problem. Higher-level programming languages are based on convenient abstractions that can break down when executed on actual computer hardware. These breakdowns include: finite arithmetic, memory access violations, asynchronous signals, and mismatches between data structures and the physical memory hierarchy. By the end of the course, students will understand these realities in considerable detail and be able to apply them to improving the code they write. Course Outcomes Students will write low-level programs to manipulate the representations of integers and floatingpoint numbers in the C language. Students understand and debug (unoptimized) assembly language code produced by current C compilers Students will be able to predict and simulate the effects of cache memories on running programs for both hypothetical and actual computer hardware Students will understand how Linux programs process asynchronous signals, and how to write signalsafe code. Students will understand how virtual memory affects program performance on X86_64 processors Students will analyze the efficiency of various dynamic memory allocation schemes. Students will be able to apply advanced code optimizations to matrix algorithms. Students will understand how computer architecture gives rise to security flaws