|
251 | 251 | \textbf{What is TDD?} |
252 | 252 | \begin{itemize} |
253 | 253 | \item A software development approach where tests are written \textbf{before} the code |
254 | | - \item Follows a short cycle: \textbf{Red → Green → Refactor} |
| 254 | + \item Follows a short cycle: \textbf{Red $\rightarrow$ Green $\rightarrow$ Refactor} |
255 | 255 | \end{itemize} |
256 | 256 | \pause |
257 | 257 | \vspace{1em} |
258 | 258 | \textbf{TDD Cycle} |
259 | 259 | \begin{enumerate} |
260 | 260 | \item \textbf{Write a test} for a small piece of functionality |
261 | | - \item \textbf{Run the test} – it should fail (Red) |
| 261 | + \item \textbf{Run the test} -- it should fail (Red) |
262 | 262 | \item \textbf{Write the code} to make the test pass (Green) |
263 | 263 | \item \textbf{Refactor} the code while keeping the test passing |
264 | 264 | \end{enumerate} |
|
344 | 344 |
|
345 | 345 | \textbf{Why Property-Based Testing?} |
346 | 346 | \begin{itemize} |
347 | | - \item Many systems have an \textbf{infinite input space} — it's impractical to test all possible cases manually |
| 347 | + \item Many systems have an \textbf{infinite input space}---it's impractical to test all possible cases manually |
348 | 348 | \item PBT helps uncover \textbf{classes of bugs} by generating a wide range of random, valid inputs |
349 | 349 | \end{itemize} |
350 | 350 | \pause |
|
520 | 520 | \begin{frame}{Continuous Integration (CI): Benefits and Extras} |
521 | 521 | \textbf{Key Benefits:} |
522 | 522 | \begin{itemize} |
523 | | - \item Developers don’t need to run all tests locally |
| 523 | + \item Developers don't need to run all tests locally |
524 | 524 | \item Tests run in a clean, consistent environment |
525 | 525 | \item Regressions are caught \textbf{before} merging |
526 | 526 | \item Ensures the \texttt{master} branch is always in a working state |
|
559 | 559 | push: |
560 | 560 | jobs: |
561 | 561 | test: |
562 | | - runs-on: ubuntu-latest |
563 | | - steps: |
564 | | - - name: Checkout |
565 | | - uses: actions/checkout@v4 |
566 | | - - name: Setup JDK |
567 | | - uses: actions/setup-java@v4 |
568 | | - with: |
569 | | - distribution: temurin |
570 | | - java-version: 11 |
571 | | - - name: Setup sbt launcher |
572 | | - uses: sbt/setup-sbt@v1 |
573 | | - - name: Build and Test |
574 | | - run: sbt test |
| 562 | + runs-on: ubuntu-latest |
| 563 | + steps: |
| 564 | + - name: Checkout |
| 565 | + uses: actions/checkout@v4 |
| 566 | + - name: Setup JDK |
| 567 | + uses: actions/setup-java@v4 |
| 568 | + with: |
| 569 | + distribution: temurin |
| 570 | + java-version: 11 |
| 571 | + - name: Setup sbt launcher |
| 572 | + uses: sbt/setup-sbt@v1 |
| 573 | + - name: Build and Test |
| 574 | + run: sbt test |
575 | 575 | \end{verbatim} |
576 | 576 | \end{column} |
577 | 577 | \begin{column}{0.4\textwidth} |
|
616 | 616 |
|
617 | 617 | \textbf{Supported Commands:} |
618 | 618 | \begin{itemize} |
619 | | - \item \texttt{IDLE} – Do nothing |
620 | | - \item \texttt{PUSH} – Insert a key/payload pair into the front of the array |
621 | | - \item \texttt{POP} – Remove the smallest key/payload pair from the end |
622 | | - \item \texttt{PUSH/POP} – Simultaneously insert a new pair and remove the smallest |
| 619 | + \item \texttt{IDLE} -- Do nothing |
| 620 | + \item \texttt{PUSH} -- Insert a key/payload pair into the front of the array |
| 621 | + \item \texttt{POP} -- Remove the smallest key/payload pair from the end |
| 622 | + \item \texttt{PUSH/POP} -- Simultaneously insert a new pair and remove the smallest |
623 | 623 | \end{itemize} |
624 | 624 |
|
625 | 625 | \pause |
|
628 | 628 | \begin{itemize} |
629 | 629 | \item \textbf{Configurable parameters:} |
630 | 630 | \begin{itemize} |
631 | | - \item \texttt{keyWidth} – Bit width of the key (used for sorting) |
632 | | - \item \texttt{valueWidth} – Bit width of the payload |
633 | | - \item \texttt{depth} – Number of stages in the systolic array |
| 631 | + \item \texttt{keyWidth} -- Bit width of the key (used for sorting) |
| 632 | + \item \texttt{valueWidth} -- Bit width of the payload |
| 633 | + \item \texttt{depth} -- Number of stages in the systolic array |
634 | 634 | \end{itemize} |
635 | 635 | \item \textbf{Modular design:} Each stage compares and forwards data |
636 | 636 | \item \textbf{Testable:} Design should support unit and integration testing |
|
685 | 685 |
|
686 | 686 | \textbf{New Requirements:} |
687 | 687 | \begin{itemize} |
688 | | - \item Values must be tracked in \textbf{groups}—each key may have multiple associated values |
| 688 | + \item Values must be tracked in \textbf{groups} --- each key may have multiple associated values |
689 | 689 | \item Each \texttt{PUSH} command may insert a \textbf{variable number of values} |
690 | 690 | \item Newly pushed values must \textbf{merge} with existing values for the same key |
691 | 691 | \item System should be \textbf{configurable} in terms of maximum pair lengths |
|
694 | 694 | \vspace{0.5em} |
695 | 695 | \textbf{Extended Commands:} |
696 | 696 | \begin{itemize} |
697 | | - \item \texttt{Push(0)} – No operation |
698 | | - \item \texttt{Pop(0)} – Pop lowest key and its value group |
699 | | - \item \texttt{Push(x)} – Push \texttt{x} values with a given key |
700 | | - \item \texttt{Pop(x)} – Pop lowest key group, then push \texttt{x} values with a new key |
| 697 | + \item \texttt{Push(0)} -- No operation |
| 698 | + \item \texttt{Pop(0)} -- Pop lowest key and its value group |
| 699 | + \item \texttt{Push(x)} -- Push \texttt{x} values with a given key |
| 700 | + \item \texttt{Pop(x)} -- Pop lowest key group, then push \texttt{x} values with a new key |
701 | 701 | \end{itemize} |
702 | 702 |
|
703 | 703 | \end{frame} |
|
0 commit comments