این بستهٔ رایگان، همراه دورهٔ «مبانی کامپیوتر و الگوریتم؛ از حل مسئله تا پروژهٔ عملی» است: ۱۲ درس کامل، ۲۳ مثال مستقل قابل اجرا با Node.js، پروژهٔ گزارش نمرهها، ۳۶ تمرین همراه درس و یک آزمون تألیفی ۲۰سؤالی با پاسخ تشریحی. متن، کد و تصاویر را تحریریه درسآوند مستقل تألیف کرده است. برای شروع حل مسئله در رشتهٔ نرمافزار و علوم کامپیوتر مناسب است و به یک زبان خاصِ تدریس در تمام دانشگاهها نسبت داده نمیشود.
داخل فایل چه چیزی دریافت میکنید؟
پوشهٔ lessons شامل متن کامل ۱۲ درس با شبهکد، مثال حلشده و ردگیری است. examples دارای ۲۳ فایل مستقل mjs و خروجی مورد انتظار آنهاست. project کد کامل گزارش نمرهها، نمونهٔ اجرا و ۱۷ گروه آزمون را دارد. آزمون ۲۰سؤالی با بارم در exam.md و exam.json، و ۳۶ سؤال همراه درسها در lesson-questions.json قرار گرفتهاند. چهار تصویر تألیفی، منابع رسمیِ پیوندشده، راهنمای فارسی و هش فایلها نیز همراه بستهاند؛ در مجموع ۵۶ سؤال تألیفی با پاسخ دارید.
پیشنیاز و روش استفاده
Node.js نسخهٔ ۲۴ یا بالاتر لازم است. بسته وابستگی شخص ثالث ندارد و npm install نیاز نیست. ZIP را استخراج کنید؛ ترمینال را در پوشهٔ computer-algorithms-practice-kit که README دارد باز کنید. ابتدا شبهکد را روی کاغذ ردگیری کنید و بعد کد را اجرا کنید. شبهکدهای plaintext برنامهٔ اجرایی نیستند؛ فقط فایل mjs با Node اجرا میشود. اگر نحو زبان برایتان تازه است، دورهٔ پایهٔ جاوااسکریپت و راهنمای Node در ویندوز را از پیوندهای پایین بخوانید.
node --version
node examples/01-copy-cost.mjs
node examples/08-binary-search.mjs
خروجی نمونهٔ هزینه، 150000 است؛ جستوجوی دودویی، 31: 4, 22: -1 چاپ میکند. این اعداد مربوط به ورودیهای ثابت همان فایلاند. در examples/expected-output.json خروجی دقیق تمام مثالها ثبت شده است. assert در مثالها، انتظارهای نوشتهشده را بررسی میکند؛ تغییر ورودی ممکن است به تغییر انتظار نیاز داشته باشد، اما ابتدا دلیل پاسخ تازه را دستی توضیح دهید.
اجرای پروژه و آزمونها
cd project
npm run check
npm test
npm start
فرمان check نگارش فایلهای پروژه را بررسی میکند، test آزمونها را اجرا میکند و start گزارش نمونه را در ترمینال نشان میدهد. دادهٔ خالی، مرزهای نمره، ورودی نامعتبر، شناسهٔ تکراری و حفظ دادهٔ ورودی بررسی میشوند. پروژه صفحهٔ وب، پایگاه داده یا سرور نیست و پورتی باز نمیکند؛ فایل grade-report.mjs فقط تابع صادر میکند و اجرای مستقیم آن بیخروجی است. راهنمای project/README.md قرارداد، خروجی و روش دیباگ را توضیح میدهد.
نمونهسؤال اول؛ پاسخ را پیش از خواندن حل کنید
سیاست فرضی دریافت بسته چنین است: وزن صحیح۱تا۳کیلوگرم «کوچک»،۴تا۱۰«متوسط» و۱۱تا۲۰«بزرگ» است؛ بیرون این بازه نامعتبر است. تصمیمها را به ترتیبی بنویسید که هر ورودی دقیقاً یک پاسخ داشته باشد. خروجی۰،۳،۴،۱۰،۱۱،۲۰و۲۱را تعیین کنید.
پاسخ تشریحی: ابتدا نوع و صحیحبودن وزن و بازهٔ۱تا۲۰را بررسی میکنیم؛ نامعتبر را رد میکنیم. سپس اگرw≤۳،کوچک؛ وگرنه اگرw≤۱۰،متوسط؛ وگرنه بزرگ. چون رد ورودی نامعتبر پیشتر انجام شده، شاخهٔ آخر دقیقاً۱۱تا۲۰را پوشش میدهد. پاسخها به ترتیب:نامعتبر،کوچک،متوسط،متوسط،بزرگ،بزرگ،نامعتبر. این سیاست یک تمرین آموزشی است، نه تعرفه یا ضابطهٔ پست.
نمونهسؤال دوم؛ ردگیری بهجای حدس
جستوجوی دودویی با lo=0، hi=length-1 و mid=floor((lo+hi)/2) روی [3,8,14,21,34,55,89] برای هدف ۲۰ انجام میشود. در عدم برابری، hi←mid-1 یا lo←mid+1 است. سه گام را با (lo,hi,mid,value) بنویسید و نتیجه را اعلام کنید.
پاسخ تشریحی: گام اول (۰،۶،۳،۲۱) است؛ چون هدف کوچکتر از ۲۱ است، hi=۲ میشود. گام دوم (۰،۲،۱،۸) است؛ چون هدف بزرگتر از ۸ است، lo=۲ میشود. گام سوم (۲،۲،۲،۱۴) است و سپس lo=۳ میشود. اکنون lo>hi است و بازه خالی شده؛ جواب -1، یعنی نبودن هدف است. هر گام عنصر میانی را قطعاً از ناحیهٔ نامزد حذف میکند. برای همین، در حالت غایب نیز بازه کوچک میشود و جستوجو خاتمه مییابد.
اگر اجرا نشد، از کجا بررسی کنیم؟
اگر node شناخته نمیشود، نصب و مسیر آن و نسخهٔ ترمینال را بررسی کنید. MODULE_NOT_FOUND معمولاً به مسیر جاری یا نام نادرست فایل مربوط است. خطای نبود package.json یعنی فرمان npm را باید داخل پوشهٔ project بزنید. در AssertionError، نام فایل، ورودی و انتظار را کنار خروجی واقعی بخوانید؛ حذف آزمون برای مخفیکردن شکست، رفع اشکال نیست. پیام خطای نمره نیز ممکن است عمدی باشد: رشتهٔ «18» طبق قرارداد پروژه با عدد 18 یکسان نیست. مثال خطای گرفتهشده در demo به معنی خرابی برنامه نیست.
محدودیتها و معنای آزمون تمرینی
آزمون ۲۰سؤالی برای خودارزیابی همین دوره تألیف شده و سؤال واقعی دانشگاه یا کنکور نیست. این بسته مدرک یا نمرهٔ رسمی تولید نمیکند. آستانهٔ نمرهٔ ده، بازهٔ صفر تا بیست و سقف هزار ردیف سیاست آموزشی پروژهاند؛ دادهٔ شخصی واقعی لازم نیست. الگوریتمهای ساده برای فهم روش و هزینه انتخاب شدهاند و ادعای سریعترین روش عمومی نداریم. مثالها و آزمونها در Node24 اجرا شدهاند؛ گذشتن آزمونها اثبات مطلق نبود خطا نیست. SHA256SUMS برای تشخیص تغییر فایل است و امضای دیجیتال ناشر نیست.
دوره، ادامهٔ مسیر و منابع
دورهٔ کامل: https://www.darsavand.com/courses/computer-fundamentals-algorithmic-thinking
محیط Node در ویندوز: https://www.darsavand.com/courses/nodejs-windows-backend-start
جاوااسکریپت پایه: https://www.darsavand.com/courses/javascript-from-zero-to-project
هزینهٔ اجرای کد: https://www.darsavand.com/resources/javascript-runtime-cost-complexity
آرایههای پیشرفته: https://www.darsavand.com/resources/javascript-nodejs-arrays-performance
برای مرور واژهها از #variable، #array، #function و #validation-contracts استفاده کنید. منابع رسمی MIT OCW، Harvard CS50، Princeton، MDN و Node.js در sources پیوند شدهاند. تألیف و مثالهای اختصاصی تحریریه درسآوند؛ برای مطالعه و تمرین آموزشی ارائه شده است. منابع خارجی صرفاً پیوند شدهاند و حقوقشان متعلق به صاحبان منابع است.