Skip to main content Skip to search
""

Computer Science

The Computer Science program at Stern College for Women stresses both the practical and theoretical aspects of computing, preparing students for employment in various fields of computer science and to pursue advanced studies. In addition to covering fundamentals of Computer Science theory and practice, the department strives to help students maximize their portfolios of significant coding projects, via course requirements and through extracurricular activities such as hackathons and internships. See these videos for highlights of a few notable semester projects from our  and .

Students gain experience with a variety of programming languages including Python, Java, Javascript, R, Go, and C/C++, and learn how to develop applications for Linux, web, and cloud platforms such as Hadoop.

Stern’s Computer Science program is ideally situated near the heart of Manhattan’s “Silicon Alley”, convenient to recruiters from major financial and tech employers. Stern Computer Science students have recently been sought and hired by employers such as Goldman Sachs, JPMorgan, and Google.

The department also offers the Professor Thomas Otway Memorial Scholarship for Computer Science majors, established in memory of the beloved Professor. Learn more about eligibility and application information for the scholarship.

For more information, read this , , or contact Professor Alan Broder, Department Chair at alan.broder@yu.edu

Program Information

Please see the Schedule of Classes for the current semester’s offerings.

  • 1001 Introduction to Programming, 3 credits
    This course introduces Computer Science concepts through the development of programs in the Python programming language. Students will learn to write code relevant to problems in the sciences and humanities. This course does not satisfy the prerequisite requirements for further Computer Science courses. Math and Computer Science majors must take COMP 1300.
  •  
  • 1300 Introduction to Computer Science, 4 credits (Spring and Fall)
    This course introduces the application of Computer Science concepts through the development of procedural and object-oriented programs in the Python 3 language. We will cover the following topics in this course: number systems, built-in data types, variables, arithmetic and logical expressions, conditionals and loops, lists, dictionaries, tuples, graphics, input and output, functions and modules, and object oriented programming with custom data types.  A significant part of this course involves actually writing Python programs that implement the above topics – in labs, for homework, and on exams.  (lecture: 3 hours; lab: 2 hours)
    Prerequisites: three years of high school mathematics and placement by examination or MATH 1160 or MATH 1412 Corequisite: Only students who have already formally declared as CS majors may take MATH 1160 as a corequisite, instead of as a prerequisite.
  •  
  • 1320 Introduction to Data Structures, 4 credits (Spring)
    This course provides a survey of fundamental data structures and algorithms needed to implement efficient, scalable programs. Topics include: arrays, sorting, stacks and queues, linked lists, recursion, binary trees, hash tables, heaps, and graphs. A significant part of this course involves actually writing Python programs that implement the above topics – in labs, for homework, and on exams.  Writing usable algorithms and data structures depends on their being well-engineered and reliable. This course also covers the application of unit testing techniques to build Python implementations that can be automatically tested for correct functioning as it is built and maintained throughout the code’s lifetime. (lecture: 3 hours; lab: 2 hours).
    Prerequisite: COMP 1300.
  •  
  • 1504 Discrete Structures, 3 credits (Fall)
    This courses provides a survey of discrete mathematical concepts often arising in computer science. Topics include: Boolean algebra and predicate calculus; proof methods; sets, functions, and relations; combinatorics; graph theory and algorithms; mathematical induction and recursion; probability and average case analysis of algorithms. Prerequisite: three years of high school mathematics.
    Pre- or Corequisite: COMP 1300
  •  
  • 2113 Computer Organization, 3 credits (Fall)
    We will cover the following topics in this course: the C programming language emphasizing pointers, explicit dynamic memory allocation, and formatted I/O; machine-level representation of programs; processor architecture; program optimization; the memory hierarchy; processes; UNIX I/O; concurrent programming.  A significant part of this course involves actually writing programs in machine code, assembly language, and the C programming language that implement the above topics – in labs, for homework, and on exams.  
    Prerequisite: COMP 1300.
  •  
  • 2314 Linux Programming for Data Analysis, 4 credits (Fall, elective)
    The Linux Operating System provides the infrastructure that powers the vast majority of the Internet.  This course introduces Linux, with a particular focus on writing code and algorithms on the command line, in scripts, and in programming languages, to manipulate massive amounts of data to achieve analytic objectives. The courses cover the following topics: the Linux command line (aka “the Shell”) and built-in features, permissions and processes, regular expressions on the command line and within code, the “gawk” programming language, version control and automated application building, advanced Python features (such as generators) and its libraries, visualization packages such as matplotlib. There is special emphasis on Hadoop and Spark to build algorithms for massively scalable computations on clusters of Linux computers.  (lecture: 3 hours; lab: 2 hours)
    Prerequisite: COMP 1300.
  •  
  • 2512 Networking & Communications, 3 credits (Fall, elective)
    An analysis of the modern model of intranets and the Internet - the application, transport, network, data link, and physical layers, and a study of the major protocols associated with them. Additional topics include client-server and peer-to-peer architectures, socket programming, network management, security, data compression, error detection, and wireless/mobile computing.  Programming projects simulate these various networking tasks, as well as labs tracking and analyzing actual network traffic.
    Prerequisites: COMP 1320, COMP 2113.
  •  
  • 2545 Algorithms, 3 credits (Fall)
    This course introduces several broad algorithmic approaches to solving problems, many interesting and practical algorithms within several problem domains, and formal and empirical methods of assessing the computational complexity of algorithms using the Python 3.10 programming language. The following topics in this course will be covered: union-find and dynamic connectivity, bottom-up merge sort, Graham Scan, graph implementations and their repercussions on various graph algorithms, dynamic programming algorithms, backtracking algorithms, greedy algorithms, graph algorithms, substring search algorithms, implementing finite state machines and regular expressions, data compression algorithms, encryption algorithms, and basic machine learning algorithms. Students will learn to compare algorithmic approaches, both empirically (by timing, or tracking primitive operations). A significant part of this course involves actually writing or understanding Python programs that implement the above topics – for homework and on exams.
    Prerequisites: COMP 1320, COMP 1504, MATH 1412.
  •  
  • 3562 Database Systems, 3 credits (Spring)
    This course provides students with both the theory and practice of relational database management systems. Topics include an overview of database systems; the relational model and algebra; the data definition language (DDL) and data manipulation language (DML) aspects of Structured Query Language (SQL); database design using E-R models and diagrams; database normalization; primitive and complex data types; physical and data storage; indexing techniques; application development, client-server model, and multi-tiered architecture; query processing and optimization; transactional management and concurrency control; security considerations.
    Prerequisite: COMP 1320.
  •  
  • 3610 Operating Systems, 3 credits (Spring)
    This course studies the fundamental principles of the design and implementation of operating systems for modern computers, including the components of an operating system, and details of processes, concurrency, multithreading, CPU scheduling, synchronization, deadlocks, main and virtual memory, secondary storage, file systems, and security. 
    Prerequisites: COMP 1320, COMP 2113.
  •  
  • 3640 Programming Languages, 3 credits (Spring)
    This course introduces concepts and implementations of programming language features, as they appear in different concrete languages, as well as some compiler theory. The following topics are covered in this course: criteria for evaluating programming language features; describing syntax and semantics via regular expressions and context-free grammars; parsers; names, scopes and bindings; expressions and assignment statements; control structures; subprograms and their implementation; object-oriented programming, and concurrency. These topics are covered both conceptually and via practical coding exercises in various modern programming languages (such as Kotlin) and classic non-imperative languages (such as Prolog and Scheme).
    Co-requisite: COMP 1320.
  •  
  • 3650 Object-Oriented Software Design, 3 credits (Spring)
    This course explores strategies for modeling problems using object-oriented techniques, as well as applying design patterns in project architecture, in a way that they are easy to maintain across the product lifetime. The following topics are covered in this course: Java syntax and constructs to support object-oriented programming, such as abstract classes, interfaces, public, private and protected; design principles, such as DRY (don’t repeat yourself) and the open-closed principle; and many design patterns such as Twin, Observer, Iterator, Decorator, Builder, Composite, Factory, Factory Method, Abstract Factory, Singleton, Command, Adapter, Façade, State, Proxy, Prototype, Flyweight, and Chain of Responsibility.
    Prerequisite: COMP 1300.
  •  
  • 3780 Web Programming & Development, 3 credits (Fall, elective)
    This course introduces the essential concepts and many of the core technologies in modern Full Stack website development. The topics covered include: HTML, CSS, JavaScript (including features such as lambdas, the spread operator, and map), TypeScript, responsive design and Bootstrap 5, NodeJS with Express for server side, React for client side, libraries such as ReactStrap, RESTful APIs, and connectivity to various databases such as MongoDB.
    Prerequisite: COMP 1300
  •  
  • 3921 Applied Machine Learning, 3 credits (Spring, elective)
    This course covers a wide variety of machine learning topics balancing between theory of machine learning and practical applied skills.  This course addresses how to solve machine learning problems (supervised and unsupervised) using techniques from both traditional machine learning and deep learning by leveraging standard, modern Python tooling such as scikit-learn and tensorflow.   The course will cover additional topics such as bias and fairness in machine learning, data pipeline basics, and model deployment basics, Students will also complete a semester long project demonstrating an end-to-end machine learning application. The course involves writing Python code both for labs, homework, and exams. 
    Prerequisite: COMP 1300, COMP 1320, MATH 1412, MATH 2105, and one more COMP programming course.
  •  
  • 3770 Natural Language Processing, 3 credits (Fall, Honors elective)
    This course explores algorithms for processing, understanding and producing human language, as well as the linguistic concepts required to make use of those algorithms. The following topics are covered in this course: phonology, morphology, syntax and semantics; basic text processing, minimum edit distance, language models, classification and how it applies to many NLP problems, Naïve Bayes and more advanced classifiers; machine learning and deep learning as applied to NLP; NLP problems such as named entity recognition, relation extraction, question answering.
    Prerequisites: COMP 1300, COMP 1320, MATH 1412, and one more  COMP programming course.

For more details about the Computer Science major and minor - see the factsheet at the Academic Advisement webpage.

Major

COMP 1300, 1320,1504, 2113, 2545, 3562, 3610, 3640, 3650 and two (2) elective courses in Computer Science; MATH 1412, 2105. (MATH 1412 and 2105 may count toward the “elective category” of the General Education requirements).

Minor

COMP 1300, 1320, and four (4) additional courses in Computer Science.

AP Computer Science A credits

Per department policy, students majoring or minoring in Computer Science may receive 4 credits for COMP 1300 and will not have to take COMP 1300 if they received a grade of 5 on the AP Computer Science A exam, and if they passed the department’s Python 3 exam with a score of 80% or better. 

July 6, 2021

This past year, as the vast majority of classes were operating at least partially online, Chair of Computer Science at Stern College for Women (SCW) Prof. Alan Broder set up a technological system for his hybrid classes that allowed for a more engaging experience for his virtual students without sacrificing the experience of those in-person.

June 3, 2021

awarded the Lillian F. and William L. Silber Professor of the Year Award to four professors across its three undergraduate schools, Yeshiva College (YC), Stern College for Women (SCW) and Sy Syms School of Business (SSSB). This year’s award recipients were Professors Dr. Irina Catrina for YC, Alan Broder for SCW and Mark Finkel and Yitzchak Rosenthal for SSSB for women and men, respectively.

August 21, 2020

As the summer of 2020 approached, students in the  computer science department faced the unpleasant reality that many companies were cutting back on their summer intern hiring because the presence of COVID-19 made it difficult to remotely administer internship programs. But Prof. Alan Broder, chair of the department at Stern College, was determined that the summer of 2020 would not be a loss for his students.

February 6, 2020

Kayla Boldt-Povarsky ‘19 enjoyed her Intro to Computer Science course with Professor Alan Broder so much she decided to make computer science her major. Now this grad works as an Analyst in Asset Management with UBS—a job Kayla landed after working at the company through an internship that the career center helped her to find. 

January 28, 2020

Facebook Software Engineer Racheli Moskowitz ‘19 double majored in computer science and physical sciences while at . Vice President of the Stern Dramatics Society as well as an organizer of ’s Hackathon, Racheli is grateful to have found a community of people at who share her diverse passions. 

January 3, 2020

The Hour of Code started as a one-hour introduction to computer science, designed not only to demystify “code” and show that anybody can learn the basics but also to broaden participation in the field of computer science. 

November 11, 2019

On Sunday, Oct. 27, 2019, three teams of three students each—one from Yeshiva College and two from Stern College for Women—traveled to the New Jersey Institute of Technology in Newark, New Jersey, to take part in a five-hour contest, competing against such universities as Columbia, Princeton, Rutgers and Cornell.

October 10, 2019

In my scholarly work in developing and applying algorithms to Jewish texts, I sometimes come across issues of copyright. In one recent example, my research group was trying to train a machine learning model to recognize instances of citations.

April 17, 2019

Held on April 4 through April 5, 2019, at the University Heights Lounge on the Wilf Campus, Hackathon 2019 attracted more than 70 students from across as well as students from Columbia University and New York University 

January 20, 2019

Stern College for Women at has received a major grant from the Selma T. and Jacques H. Mitrani Foundation to renovate a space on the Israel Henry Beren Campus into a computer science collaboration lab. Once completed, students in the Stern College computer science program will have a dedicated space to work on coding, creating, and collaborating.

May 30, 2018

Sarah Gulkowitz Awarded $2,500 Women in Technology Scholarship By Visionary Integration Professionals

March 1, 2017

With new faculty, expanded course offerings and record enrollment, the computer science major flourishes!

Alan Broder

 

Department Chair, Clinical Professor of Computer Science

Professor Alan Broder is Chair of the Department of Computer Science at Stern College for Women, , in New York City.  At Stern College, Professor Broder lectures on Computer Science, Data Structures and Algorithms, and Data Analytics, and is also responsible for the administration of the faculty and program in Computer Science at the college.

Previously, he was founder, Chairman, and Fellow of Novetta Solutions, a 500+ person firm specializing in custom high-performance software for big-data strategic analytics.

Prof. Broder is an expert Computer Scientist and highly effective communicator, with over 30 years of experience leading and implementing systems for supercomputing, geo-temporal analysis, data quality, randomized algorithms, graphs and multi-dimensional data structures, and data mining for fraud discovery and other strategic applications. He is a recognized expert in entity resolution technologies, and was the chief architect and a principal developer of several custom parallel data mining systems that successfully operate on massive scale data.  

Prof. Broder advises senior decision makers on policy issues related to entity disambiguation, privacy protection, massive-scale strategic analytics, and data quality. In 2014 he was appointed by US Department of Homeland Security Secretary Jeh Charles Johnson to serve on the Department’s Data Privacy and Integrity Advisory Committee.

 

Zach Glassman

Adjunct Assistant Professor of Computer Science

Zach Glassman received bachelors degrees in Physics and Mathematics from Pomona College before going on to a graduate degree in Chemical Physics studying experimental atomic physics at NIST/University of Maryland.  There, he discovered a love of Python and data, and subsequently transitioned into industry as a data scientist. After working at a data science startup, Zach is now a Director at UBS Asset Management.  In his free time he enjoys cycling, reading science fiction novels, and spending time with his wife and their two cats.

 

Ari Shamash

Adjunct Assistant Professor of Computer Science

At Stern, over the last 5 years, Ari Shamash has taught both Database Systems and Computer Systems, classes that were well received and valued by the students.  In his other day job, he is part of Google's Privacy and Policy Infrastructure, a team responsible for infrastructure that ensures policy compliance for data and systems at Google. Ari’s skills span deep technical analysis and implementation, as well as building large, successful, and diverse teams.  Prior to Google, Ari was at Sun Microsystems and BoxHill systems.  Ari graduated from Columbia University with undergraduate and graduate degrees in Computer Science, focusing on graphical user interfaces for mobile computers.  During off hours, Ari enjoys scuba diving and bicycling. 

 

Lawrence Teitelman

Clinical Assistant Professor of Computer Science

Lawrence Teitelman is a multi-time alumnus of , having received his BA in Mathematics from Yeshiva College, MS in Semitic Languages from the Bernard Revel Graduate School, and Ordination from the Rabbi Isaac Elchanan Theological Seminary, as well as graduate degrees in Mathematics and Computer Science from N Courant and CUNY respectively. He began his academic career at in the late 1980s as a TA and Lab Instructor for the introductory CS course sequence (then taught in Pascal). He subsequently switched to industry where he worked as a system developer / analyst in a variety of disciplines, while also teaching at CUNY's Queens College. Last year, Lawrence returned "home" to , joining the full-time faculty of Stern College's CS Dept. where he currently teaches Database Systems, Networking and Communications, Operating Systems, Mathematics for Computer Science, as well as Programming for Non-CS Majors. 

 

Joshua Waxman

Assistant Professor of Computer Science

Joshua Waxman earned his PhD in Computer Science in 2014, his rabbinic ordination from RIETS in 2005, and his BA from Yeshiva College in 2000. He has many years of experience in both software development and in academia, in teaching and research. In industry, over the course of 22 years, he has developed device drivers for aircraft network simulator cards, telephony integration, bespoke CRM software, stock trading software, reporting software for traders and hedge fund managers, and NLP / ML-based assessment of survey respondent attention. In academia, he has taught computer science for 15 years and, shortly after obtaining his PhD, returned to to teach at Stern College for Women.

His present research interests include:

* Natural Language Processing, especially for languages which lack large linguistic resources; machine learning, deep learning, speech recognition.

* Social Network Graphs

* Digital Humanities, especially as it applies to Judaic texts.

Courses taught: Introduction to Computer Science, Algorithms, Programming Languages, Web Development, Natural Language Processing

Q: I want to register for COMP 1300 or maybe COMP 1001. Which one should I take?

A: COMP 1300 is a pre-requisite for all subsequent Computer Science courses. So, if there’s any chance that you would want to take subsequent CS courses, then you should take COMP 1300, which has a math proficiency requirement (more on that below). If you do not satisfy the math proficiency requirement, you might want to consider instead taking COMP 1001, which is the introductory programming course for non-majors, and which does not have the math proficiency requirement. However, COMP 1001 can’t be used as a pre-requisite for any subsequent Computer Science course.

 

Q: What are the math proficiency requirements for COMP 1300?

A: In order to take COMP 1300, you MUST document math proficiency before the first day of class by already having done one of these four things:

  • You have already earned a 4 or 5 on the AP Calculus test (either AB or BC), or,

  • You have already earned a grade of C or above in Stern’s MATH 1160 (Pre-Calculus) or higher-numbered MATH course. Only Stern MATH department courses count for this purpose (not Syms, or other school Math courses), or,

  • You have already scored at least 16/25 on Stern's Math Placement Test, or,

  • You have already formally declared as a Computer Science major, and you have registered the same semester for MATH 1160 or MATH 1410 or MATH 1412. IMPORTANT note: only formally declared CS majors can take advantage of satisfying the Math requirement by taking MATH 1160, 1410, or 1412 as a co-requisite. For all other majors, those courses are a firm pre-requisite. No exceptions can be made to this policy.

Once you register for COMP 1300, you will receive an email from the professor with a link to a form that you must use to document your math credentials. In order to take the online Math Placement Exam, you should contact Academic Advising to get instructions and login credentials. You can contact the department chair Prof. Alan Broder alan.broder@yu.edu with any questions about this process.

 

Q: Why is it important to start the CS degree in a Fall semester?

A: The sequence of CS courses is best pursued by starting in a Fall semester, so we strongly encourage students to start in the Fall – with the first course: COMP 1300 – Introduction to Computer Science. COMP 1300 is a pre-requisite for all our other CS courses and is offered every semester.

The most important reason to take COMP 1300 in the Fall, is that the next course, COMP 1320 – Data Structures, is only taught in the Spring. The content covered in Data Structures is a key element of internship interviews. So, without the course, it could be challenging to get past the initial job interview screening. 

To understand why the timing is so important, suppose, for example, that you were to start at Stern in the Spring of 2022 with COMP 1300. That would mean that you wouldn’t be able to take COMP 1320 until the following Spring of 2023, which would be too late for interviews for Summer 2023 internships which were conducted months earlier. On the other hand, had you started at Stern in Fall of 2021, you’d take COMP 1320 in Spring of 2022. That following summer of 2022 when interviews for Summer 2023 internships start, you’d have already taken COMP 1320, and be ready to compete for a position.

Why the big focus on internships? Because internships are a very important step towards securing a good job for when you graduate. 

All of that said, we know that students have compelling reasons to want to stay in Israel for an extra semester. Feel free to reach out to Professor Broder to discuss any questions you may have.

 

Q: What kind of laptop should I buy when I get started with a CS degree

Here are the main characteristics we recommend for your new laptop whether Mac or Windows: 

- RAM (memory) - at least 16 GB
- Hard Drive - make sure it is a Solid State Drive (SSD), it should contain at least 256GB, but 512GB is better for you in the long run. 
- Screen Size - you'll be spending a lot of time looking at the screen, so while some students seem to be ok with a 13" screen, you may be happier with a 14" or 15" screen, but they are of course larger and heavier. 

Those are the minimum characteristics. When you shop for a laptop it is wise to try to get your hands on the computer at the store to make sure you’re happy with the keyboard and the screen. Some of the lower-end Windows laptops tend to have disappointing keyboards and screens.

Please do not get a Chromebook - it just won't work for the software we will be using.

Skip past mobile menu to footer